2017-01-18 9 views
0

API呼び出しのリストを作成し、応答コードをupdateResponsesという配列に収集するスクリプトがあります。私はたくさん配置されて見て、declare -pが推奨されましたが、それは記載されている方法で動作していないか、または私はそれを間違って使用しています。シェルスクリプトから配列を返してシェルコマンドラインで反復/処理する

私が必要とするもの:スクリプトから配列を返し、要素を反復して検証します。

マイscript.shは、このアクションのハイライトが含まれています。私の端末で

updateResponses=() 
    do 
    ..get statusCodes from list of calls in a loop... 
    updateResponses+=("$statusCode") 
    done 
declare -p updateResponses 

私はこのスクリプトを実行した後、私は配列をプリントアウト表示されますが、それはそれあるかのように見えますが、反復処理するための配列ではありません使用するために再初期化されました。 echo "${#updateResponses[@]}"を実行すると、サイズとして0が返されます。 script.sh後の出力の

例が動作して行われます。

declare -a updateResponses='([0]="200" [1]="200" [2]="200" [3]="200" [4]="200" [5]="200" [6]="200" [7]="200" [8]="200" [9]="200" [10]="200" [11]="200" [12]="200" [13]="200" [14]="200" [15]="200" [16]="200" [17]="200" [18]="200" [19]="200" [20]="200" [21]="200" [22]="200" [23]="200" [24]="200" [25]="200" [26]="200" [27]="200" [28]="200" [29]="200" [30]="200" [31]="200" [32]="200" [33]="200")' 

答えて

0

あなたは、例えば、現在のシェルのコンテキストでスクリプトの出力を実行する必要があります

$ . <(arr=('a b' 'c d' 'e;f') ; declare -p arr) 
$ echo ${arr[1]} 
c d 
+0

ありがとうございます。私の配列はスクリプトで作成されているので、これを追加しました。 <(declare -p updateResponses) 'を実行します。 'script.sh:行59:予期しないトークンに近い構文エラー'( ' 'script.sh:行59:'。<(宣言-p updateResponses)' ' –

+0

@OjenG:あなたが 'bash'を実行していないように聞こえます – choroba

+0

私の' .sh'ファイルは '#!/ bin/bash'で始まっていますので、bashと解釈されるべきでしょうか? –

関連する問題