bashのfor文のまとめ

bashのfor文のまとめ

Posted at March 3,2014 1:55 AM
Tag:[bash]

bashのfor文のまとめです。

bashのfor文

ネットで調べたところ、ケース別ですぐに使えそうなサンプルが並んでいるものがなかったので、このエントリーでまとめてみました。

認識違いがありましたどこかでつぶやいてください。

なお、サンプルでは変数のカーリーブレースやダブルクォーテーションは省略しています。適宜付与してください。

1.フォーマット

bashのfor文のフォーマットは

for 繰り返し条件
do
    # ...
done

となっています。

次のフォーマットでも書けます(以降、このフォーマットで解説)。

for 繰り返し条件; do
    # ...
done

2.初期値・ループ条件・ループ時の処理で指定する

繰り返し条件の部分は一般的なfor文のお作法(初期値、ループ条件、ループ時の処理)が利用できます。

for ((初期値; ループ条件; ループ時の処理)); do
    # ...
done

サンプル

max=10
for ((i=0; i < $max; i++)); do
    echo $i
done

このfor文ではカッコが2つ必要なので注意してください。

3.inを利用する

bashではinを利用する方法があります。

for 変数 in 値のリスト; do
    # ...
done

inを使った場合、値(値のリスト)の指定方法がいくつかあるので次項から紹介します。

4.値を直接指定する

値を直接指定するには、inの後に利用したい値を列挙します。値が連続している必要はありません。

for i in 0 1 3 5 8 9; do
    echo $i
done

値の部分には変数を指定することも可能です。

foo="0"
bar="1 3 5 8 9"
for i in $foo $bar; do
    echo $i
done

5.値を範囲で指定する

値が連続している場合、カーリーブレースで括り、その中の最小値と最大値で設定することができます。

for i in {0..9}; do
    echo $i
done

inの後方でバッククォートを使ってseqコマンドを実行しても同様のことが実現できます。

for i in `seq 0 9`; do
    echo $i
done

バッククォートの部分は$()でも同様のことができます(バッククォートは古い形式なのでこちらが推奨のようです)。

for i in $(seq 0 9); do
    echo $i
done

6.値を配列変数で指定する

配列を利用するには、inの後方に配列名を指定します。

array=(0 1 2 3 4 5 6 7 8 9)
for i in ${array[@]}; do
    echo $i
done

7.値をファイルで指定する

ファイルから読み込む場合、inの後方にバッククォートでファイルの出力処理を記載します。

number.txt

0
1
2
3
4
5
6
7
8
9
for i in $(cat number.txt); do
    echo $i 
done

8.値にコマンドライン引数を利用する

値にコマンドライン引数を利用する場合、「$@」を使います。

for i in "$@"; do
    echo $i
done

以上です。

ここに挙げた以外にも色々あると思うので、適宜追加したいと思います。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)