GNU/Linux >> Linux の 問題 >  >> Linux

タイプセット-aスクリプトにエラーがありますか?

スクリプトで連想配列を使用していたため、

で宣言していました。

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 連想配列の動作のほとんどを取得します。


Linux
  1. Bashスクリプトをデバッグする方法は?

  2. Bashスクリプトエラー:整数式が必要ですか?

  3. URLからbashスクリプトを実行

  1. bash スクリプトをデーモンとして実行する

  2. パスに bash スクリプトを追加する

  3. Bash スクリプトでエラーを発生させる

  1. Bashスクリプトでのエラー処理

  2. Bash スクリプトのパターン マッチング

  3. jenkins パイプラインで bash コマンドを実行する