📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 375行目: | 375行目: | ||
以下の例では、<code>break</code>コマンドに2を指定して実行することにより、2重ループを一気に抜けている。<br> | 以下の例では、<code>break</code>コマンドに2を指定して実行することにより、2重ループを一気に抜けている。<br> | ||
同様に、2重ループの先頭(1つ目のwhile文の先頭)に戻る場合は、<code>continue</code>コマンドの引数に2を指定して実行する。<br> | 同様に、2重ループの先頭(1つ目のwhile文の先頭)に戻る場合は、<code>continue</code>コマンドの引数に2を指定して実行する。<br> | ||
< | <syntaxhighlight lang="sh"> | ||
while : # 1つ目のループ | while : # 1つ目のループ | ||
do | do | ||
| 390行目: | 390行目: | ||
done | done | ||
done | done | ||
</ | </syntaxhighlight> | ||
<br><br> | |||
== コマンドのグルーピングと繰り返し処理 == | |||
==== コマンドのグルーピング ==== | |||
シェル上でコマンドを実行する時、以下のように、コマンドを括弧()で囲みグルーピングすると、<br> | |||
リダイレクト等が全てのコマンドに対して動くようになる。<br> | |||
(command1; command2; command3) | |||
# 例 | |||
(echo 'AAA'; echo 'BBB'; echo 'CCC') > output.txt | |||
<br> | |||
また、以下のように、複数行に分けて記述することもできる。<br> | |||
この場合、各コマンドの末尾にセミコロン;は必要ない。<br> | |||
( | |||
echo 'AAA' | |||
echo 'BBB' | |||
echo 'CCC' | |||
) > output.txt | |||
<br> | |||
グルーピングしたコマンドの出力をパイプ処理で繋ぐこともできる。<br> | |||
( | |||
echo 'foo' | |||
echo 'bar' | |||
echo 'yahoo' | |||
echo 'foo' | |||
) | sort | uniq | |||
<br> | |||
グルーピングしたコマンドは子シェルで実行されるため、<br> | |||
子シェル内でカレントディレクトリや環境変数等を変更した場合、コマンド終了時に元に戻る。<br> | |||
これは、一時的にカレントディレクトリを変更して、コマンドを実行する場合に便利である。<br> | |||
pwd | |||
/home | |||
(cd /etc; pwd) | |||
/etc | |||
pwd | |||
/home | |||
<br> | |||
==== ループ内の出力をリダイレクトする ==== | |||
for文やwhile文の内部でechoコマンドを実行した結果は、doneの直後にリダイレクトを記述することで、まとめてファイルに出力できる。<br> | |||
<syntaxhighlight lang="sh"> | |||
for x in AAA BBB CCC | |||
do | |||
echo "$x" | |||
echo "......" | |||
done > output.txt | |||
# 出力(output.txt) | |||
AAA | |||
...... | |||
BBB | |||
...... | |||
CCC | |||
...... | |||
</syntaxhighlight> | |||
<br> | |||
==== ループ内の出力をパイプで接続する ==== | |||
ループ内の出力結果は、パイプ処理|で別のコマンドに繋ぐことができる。<br> | |||
<syntaxhighlight lang="sh"> | |||
for x in CCC AAA DDD EEE BBB | |||
do | |||
echo $x | |||
done | sort | |||
# 出力 | |||
AAA | |||
BBB | |||
CCC | |||
DDD | |||
EEE | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:シェルスクリプト]] | [[カテゴリ:シェルスクリプト]] | ||