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
以上です。
ここに挙げた以外にも色々あると思うので、適宜追加したいと思います。
Posted by yujiro このページの先頭に戻る
- シェルスクリプトのexpectで応答メッセージを振り分ける方法
- bashでPostgreSQLのselect結果を出力する方法
- bashでbackspaceが動作しない場合の対処
- bashの変数から最後の1文字を取得・削除する方法
- bashのwhile文で利用した変数がループ外で反映されない場合の対処
- bashのechoでアスタリスク「*」がワイルドカードとして展開される場合の対処
- bashの正規表現でスペース(空白)を判定する方法
- bashで文字列の長さを調べる方法
- bashで数値を判定する方法
- bashで小数点を比較する方法
- bashの配列をjoinする方法
- bashのif文で正規表現を使用する方法
- Bashで変数を大文字または小文字に変換する方法
- bashの変数をsplitして配列を作る方法
- シェルスクリプトでtelnet接続する方法
トラックバックURL
コメントする
greeting