シェルスクリプトのfor 〜 in 文
しばらく書いていないとよく間違えてしまうのがfor 〜 in 文の記法です。
まず、正しい記述はこのようになります。
#!/bin/sh array=("hoge" "foo" "var") for tmp in @{array[*]} do echo ${tmp} done 実行結果 hoge foo var
しかし、以下のような書き方をしてしまうと、実行エラーにはなりませんが想定しない動作をしてしまいます。
for tmp in @array do echo ${tmp} done 実行結果 @array
他の言語ばかり書いているとついつい@arrayと書いてしまいがちですが、シェルスクリプトではNGです。
for tmp in $array[*] do echo ${tmp} done 実行結果 hoge[*]
明示的に{}でくくっておかないと「"配列の先頭の要素"+"[*]"」という文字列として認識されてしまいます。
配列全体として認識させたい場合は正しい記述例にあるように「${array[*]}」と記述する必要があります。