sh: 構文エラー: '('予期しない('fi'が予期される)

sh: 構文エラー: '('予期しない('fi'が予期される)

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設定は必要ありません。

おすすめ記事