bash で指定回数ループする方法のあれこれまとめ
bash で使える方法です。sh では使えません。
while で10回ループ
bash 算術演算のカッコと組み合わせて強いです。
#!/usr/bin/env bash while (( cnt++ < 10 )); do echo $cnt done
break も使えます。
break の導入の if 分も比較演算子を (()) で使えます。
#!/usr/bin/env bash while (( cnt++ < 10 )); do echo $cnt if (( cnt > 5 )) ;then break fi done
for で 10 回ループーC言語スタイル
bash には (()) と for を組み合わせ使えるものがあります。
注意 for 中は$i++
でなく、i++
のようになる
#!/usr/bin/env bash for (( i=0; i< 10 ; i++ )); do echo $i done
for もbreak が使えます。
for で 10回ループ - 展開
JavaScriptなどでおなじみの for .. in ループ
for i in {0...9}; do echo $i if (( i > 5 )) ;then break fi done
seq コマンドを使う。
seq コマンドを使う事もできます。
for i in `seq 0 9` ; do echo $i; done
配列を使って10回ループ
ARR=`seq -s ' ' 0 9 ` for i in $ARR ; do echo $i done
C言語スタイル
通常のプログラミング言語と同じ for も使える。
for (( idx=0 ; idx<10; idx++ )) ; do echo $idx; done
配列と組み合わせてループ
配列の添字にアクセスする(多分あんまり使わない。)
## 配列を作る ARR=(`seq -s ' ' 1000 1009 `) echo $ARR echo ${ARR[2]} ## 配列にアクセス for (( i = 0; i < ${#ARR[*]}; i++ )) ; do echo "$i => ${ARR[$i]}" done
配列の配列を作ることがあれば使えるけど、現代では配列の配列をするくらいなら、名前付きインデックスを使うほうが手っ取り早い気がする。
まとめ
自分でも時々忘れそうになります。再度まとめ直し。
指定回数トライして、成功したら抜ける。みたいなことを書こうとして詰まった
過去記事
bashの似てて紛らわしいもの (( / $(( の丸括弧 - それマグで!
bashで10回ループ(Bashによる指定回ループとファイル名を001にする) - それマグで!
bashの似てて紛らわしいもの (( / $(( の丸括弧 - それマグで!
bashで連想配列(assoc array / hash ) を使う。 - それマグで!
bashの配列のまとめ(定義・代入・参照と取得・ループ) - それマグで!
** 2022/10/03
for (( i=0; i<0; i++ ))
を追加。