スクリプトで連想配列を使用していたため、
で宣言していました。
typeset -A <array_name>
コマンドを実行すると、bashプロンプトで正常に機能しました
しかし、スクリプトで使用すると、次のエラーが発生します
typeset: -A: invalid option
typeset: usage: typeset [-afFirtx] [-p] name[=value] ...
別の解決策も受け入れられます。
補足:タイプセット-aを試しましたが、インデックス付き配列を宣言しています。しかし、連想配列が必要です。
承認された回答:
これは、typeset -A
に対してBash3によって生成されたエラーです。 。連想配列はBash4で追加されましたが、Bash3.2以前にはありません。
スクリプトは、シェルとして使用しているものとは異なるバージョンのBashで実行されているようです。どちらの場合も同じマシンを使用している場合は、複数のバージョンがインストールされており、パスが異なるバージョンを選択できる可能性があります。スクリプトを実行している別のマシンを使用している場合は、新しいバージョンをインストールできる可能性がありますが、それ以外の場合は、Bashで直接サポートできません。
zsh
はるかに古いバージョンから連想配列をサポートしているので、それが利用可能であれば、あまり手間をかけずにスクリプトを移植できる可能性があります。それができない場合は、通常の配列とgrep
を使用して偽造することができます 、または${[email protected]}
を使用します および通常の変数のセット。これは、古いBashバージョンで使用できます。 ${[email protected]}
名前がprefix
で始まるすべての変数の名前に展開されます 、複数の変数prefix_key1
と組み合わせて使用できます 、prefix_another
連想配列の動作のほとんどを取得します。