【Bash コーディングの小ネタ [for loop 編]】
- bash コーディングのテクニックをまとていく。今回は for loop 編。
♢ for loop
- 参考資料:
37.3. Bash, version 4: http://tldp.org/LDP/abs/html/bashver4.html
1. for loop でインクリメント
a. .. 記法 [刻み値1のインクリメント]
- 現行の bash v4 はインクリメントのロジックを内包しており、.. 記法のインクリメントを推奨。
- seq や expr よりも断然高速。子プロセスを別途立ち上げる必要無し。
#!/bin/bash
i=0
for i in {40..50}; do
echo $i
done
---- 実行結果 ----
40
41
42
43
44
45
46
47
48
49
50
b. .. 記法 [刻み値2以上のインクリメント]
- 2以上の刻み値にだって対応可能
#!/bin/bash
i=0
for i in {40..50..2}; do
echo $i
done
---- 実行結果 ----
40
42
44
46
48
50
c. .. 記法 [0パディング]
- 0パディングにも対応。日付ファイルを touch で作る際に愛用。
#!/bin/bash
i=0
for i in {01..10}; do
echo $i
done
---- 実行結果 ----
01
02
03
04
05
06
07
08
09
10
d. C言語ライク
- C言語ライクな記法にも対応。私はこの書き方が一番使いやすい。
- bash コーダ以外でも直感的に理解し易い点が good !!
#!/bin/bash
for (( i=0; i <= 5; i++ )) ; do
echo $i
done
---- 実行結果 ----
0
1
2
3
4
5
2. for loop でデクリメント
a. .. 記法 [刻み値1のデクリメント]
- 開始値を大きく、終了値を小さくするだけで良い
#!/bin/bash
i=0
for i in {50..45}; do
echo $i
done
---- 実行結果 ----
50
49
48
47
46
45
b. .. 記法 [刻み値2以上のデクリメント]
- インクリメントの場合と要領は同じ
#!/bin/bash
i=0
for i in {50..40..2}; do
echo $i
done
---- 実行結果 ----
50
48
46
44
42
40