シェルスクリプトにおける反復処理
[History] [Last Modified] (2016/02/20 13:05:37)

for

sample.sh

#!/bin/sh

for i in a b c; do
    echo $i
done

ARR=(
    "abc"
    "xyz"
)
for e in "${ARR[@]}"; do
    echo $e
done

実行例

$ ./sample.sh
a
b
c
abc
xyz

while

sample.sh

#!/bin/sh

cnt=1
while [ $cnt -lt 5 ]; do  # [] はtestコマンドの略記法であり「test $cnt -lt 3」としても同じ意味。
    echo $cnt
    cnt=`expr $cnt + 1`
done


while :   # ':'はpythonでのpassに相当するコマンド
do
    echo 'looping...'
    # break
done

実行例

$ ./sample.sh
1
2
3
4
looping...
looping...
...

ファイルを読み込む

in.txt

line1
line2

sample.sh

#!/bin/sh
while read line
do
  echo $line
done < in.txt

実行例

$ ./sample.sh
line1
line2

コマンドラインで実行する場面では以下のように一行で表現します。

$ while read line; do echo $line; done < in.txt
Related pages
    バイナリファイルから文字列を抽出する (strings) 文字列らしい部分をバイナリファイルから抽出して出力するコマンドです。得体の知れないコマンドのオプションを調べたり strings /usr/bin/gcc | grep ^-- --help --target-help --sysroot= --all-warnings --ansi --assemble --assert --cla