私のシェルスクリプトにshに問題があります

私のシェルスクリプトにshに問題があります

シェルスクリプトの本を読んでいますが、配列の部分で詰まっています。配列を宣言するとき次のようにスクリプトを実行します。:

sh hello.sh

ZSHでもエラーが表示されます。

one.sh: 2: Syntax error: "(" unexpected

私が走るときこれは./hello.sh魅力のように動作します。

これはスクリプトです。

#!/bin/bash
myarr=(on two three four five)
echo "${myarr[1]}"
exit 0

ノート:なぜ動作しないのか教えてくださいsh。私はシェルを初めて使用します!

答え1

その理由は、Bourne Shell(sh)が配列をサポートしていないからです(望む方法ではありません)。したがって、保持などを使用しないshでください。bashkshzsh

詳細は以下で確認できます。この回答

BourneシェルまたはPOSIX sh言語仕様では配列はサポートされていません。または、位置パラメータ($ 1、$ 2、$ @、つまり関数ごとの配列もあります)という1つの配列しかありません。

f run as は shebang と現在のシェルとは独立してsh hello.sh読み取られます。sh

関連情報