2017-01-25 21 views

答えて

4

あなたはこのようにそれを使用することができます:

# declare an array 
declare -a arr=() 

for i in $ip 
do 
    # append each curl output into our array 
    arr+=("$(curl -s $i:9200)") 
done 

# check array content 
declare -p arr 

複数の配列エントリへcurlコマンドの出力の分割言葉を避けるためにカールのコメントを囲む引用符を使用することが重要です。引用符を使用すると、すべてのカール出力が配列内の単一のエントリになります。

+1

素晴らしい@anubhava。 curlコマンドを二重引用符で囲む必要がある理由を説明できればうれしいと思います。 – codeforester

+0

私が必要とするのは、curlコマンドの出力を配列に追加することです。コマンド自体ではありません。 – zozo6015

+0

@ zozo6015:コマンド置換という '$(...) 'を使用して、コマンド自体ではなく' curl'コマンドの出力を追加しています。 – anubhava

0

あなたは$()で囲むことで、化合物のコマンドを含む、任意のコマンドの出力をキャプチャすることができ+=

declare -a output 
for i in $ip 
do 
    output+=("$(curl -s $i:9200)") 
done 
+0

予期しないトークンの近くで '-bash:syntax error'( ' – zozo6015

+0

Yep。ちょうどそれをテストしたところで '+ ='の前にスペースを入れることはできません。毎日新しいもの –

0

を使用することができます。同様の方法で行うことができる配列に取り込み、原則として

results=$(
    for i in $ip 
    do 
    curl -s $i:9200 
    done 
) 

を、しかし、扱う要素の区切り文字は、適切に難しくなるかもしれない:その技術を使用して、あなたはそうのような変数にあなたのforループの出力をキャプチャすることができます。

関連する問題