例1:args-loop1.sh while [ $# -gt 0 ] do # 処理 echo "$1" shift done 例2:args-loop2.sh
while [ "$1" != "" ] do # 処理 echo "$1" shift done 例1・例2は共にshiftコマンドを使用した処理。継続条件の判定方法は少し異なるだけ。例1は配列の数だけきっちり繰り返す。万が一、空文字の項目があってもそれは1つの項目として扱う。例2は空文字の項目があった場合には処理を中断してしまう。ケースバイケースではあるが、例1のほうがスマートだし意味合いをきちんと捉えた記述である。
例1実行例
./args-loop1.sh 1 "" 3 1 3 例2実行例
./args-loop2.sh 1 "" 3 1 shiftコマンドを使ったループは、変数を新たに宣言せずに「$1」などを使用できる。shiftコマンドをうまく利用したスマートな方法(だと思う)。ただし、shiftを使うので当然パラメータの位置がずれるため、引数の評価を繰り返し行なう場合には不向き。
例3
for INDEX in $* do # 処理 echo "${INDEX}" done 例3は割りと普通のfor文。これだと引数の位置をずらさずに済むので、引数の評価が繰り返し行なうような場合にも問題なく対応できる。
2011/06/06
|
Linux >