Bashスクリプト入門
Alex Scriven
Data Scientist
Python:
for x in range(3):
print(x)
0
1
2
R:
for (x in seq(3)){
print(x)
}
[1] 1
[1] 2
[1] 3
Bash の基本構造もほぼ同じです。
for x in 1 2 3do echo $x done
1
2
3
Bash には数値範囲を作る「ブレース展開」があります。
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
もう一つの一般的な FOR の書き方が「3 つの式」構文です。
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
Bash では、* を使ったパターン展開で for ループにファイル群を渡せます(例: ディレクトリ内のファイル)。
例として、/books フォルダにテキストが 2 つあるとします。
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
$() 記法でシェル中でコマンドを実行できるのを覚えていますか?
for ループにそのまま渡せます。
次のようなフォルダ構成を想定します。

シェル内シェルの結果をループできます。
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
FOR ループに似ていますが、各反復で判定される条件を設定します。
条件が満たされる間、反復が続きます。
for の代わりに while を使う-le)&&(AND)、||(OR)も使用可簡単な例です。
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
終了条件が満たされない無限 WHILE ループに注意。
x=1
while [ $x -le 3 ];
do
echo $x
# x を増やさないと 3 に到達しない
# ((x+=1))
done
これは 1 を延々と出力します。
Bashスクリプト入門