私のスクリプトで連想配列を使用しているので、
typeset -A <array_name>
コマンドを実行すると、bashプロンプトで正しく機能します。
ただし、スクリプトで使用すると、次のエラーが発生します。
typeset: -A: invalid option typeset: usage: typeset [-afFirtx] [-p] name[=value] ...
私も代替ソリューションで開いています。
注:typeset -aを試しましたが、インデックス配列を宣言しました。しかし、私は連想配列を望んでいます。
答え1
これはBash 3でtypeset -A
。連想配列Bash 4に追加されましたここではないバッシュ3.2以下。
あなたのスクリプトは、シェルとして使用されているものとは異なるバージョンのBashで実行されているようです。どちらの場合も、同じシステム上にある場合は複数のバージョンがインストールされており、パスが異なるバージョンを選択できます。別のコンピュータでスクリプトを実行すると、最新バージョンをインストールできますが、そうでなければ Bash は直接サポートされません。
zsh
連想配列は以前のバージョンからサポートされているため、利用可能な機能があれば、多くの作業なしでスクリプトを移植できます。そうでない場合は、通常の配列 sum を使用して偽造するか、grep
次を使用できます。${!prefix@}
以前のバージョンのBashで利用可能な一般的な変数セットもあります。${!prefix@}
名前はで始まるすべての変数の名前に展開されますprefix
。これを複数の変数と組み合わせて使用して、連想配列の動作をほとんど得ることprefix_key1
ができます。prefix_another