shを使用するとエラーが発生しますが、bashを使用するとエラーは発生しません。理由をご存知ですか?
$ sh test.sh
test.sh: 5: test.sh: Syntax error: "(" unexpected (expecting "fi")
#!/bin/bash
if [ 1 -eq 1 ]
then
declare -a methods=(Method1 Method2 Method3)
for i in "${methods[@]}"
do
echo $i
done
else
echo not found
fi
答え1
bash hashbangがあり、shを使用してスクリプトを実行しています。 POSIX shは配列をサポートしておらず、一部のシステムではまだ機能できますが、これは保証されていないため、括弧のエラーが発生します。
使用bash test.sh
または実行可能にして、ハッシュバンにソルバーを決定させます。
そして、1は常に1に等しいので、完全なif設定は必要ありません。