以下のようにforループがあります。ループの出力全体を配列または変数に追加する必要があります。forループの出力を配列または変数に格納する
for i in $ip
do
curl -s $i:9200
done
どのように私はそれを達成できますか?
以下のようにforループがあります。ループの出力全体を配列または変数に追加する必要があります。forループの出力を配列または変数に格納する
for i in $ip
do
curl -s $i:9200
done
どのように私はそれを達成できますか?
あなたはこのようにそれを使用することができます:
# 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
コマンドの出力の分割言葉を避けるためにカールのコメントを囲む引用符を使用することが重要です。引用符を使用すると、すべてのカール出力が配列内の単一のエントリになります。
あなたは$()
で囲むことで、化合物のコマンドを含む、任意のコマンドの出力をキャプチャすることができ+=
declare -a output
for i in $ip
do
output+=("$(curl -s $i:9200)")
done
予期しないトークンの近くで '-bash:syntax error'( ' – zozo6015
Yep。ちょうどそれをテストしたところで '+ ='の前にスペースを入れることはできません。毎日新しいもの –
を使用することができます。同様の方法で行うことができる配列に取り込み、原則として
results=$(
for i in $ip
do
curl -s $i:9200
done
)
を、しかし、扱う要素の区切り文字は、適切に難しくなるかもしれない:その技術を使用して、あなたはそうのような変数にあなたのfor
ループの出力をキャプチャすることができます。
素晴らしい@anubhava。 curlコマンドを二重引用符で囲む必要がある理由を説明できればうれしいと思います。 – codeforester
私が必要とするのは、curlコマンドの出力を配列に追加することです。コマンド自体ではありません。 – zozo6015
@ zozo6015:コマンド置換という '$(...) 'を使用して、コマンド自体ではなく' curl'コマンドの出力を追加しています。 – anubhava