LoginSignup
22
22

More than 5 years have passed since last update.

Bash コーディングの小ネタ [for loop 編]

Last updated at Posted at 2016-04-02

【Bash コーディングの小ネタ [for loop 編]】

  • bash コーディングのテクニックをまとていく。今回は for loop 編。

♢ for loop

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
22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22