1. 1つの変数に取り組む
これを試して:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
これはcurl
1回実行され、string1
またはの出現に対してgrepを実行しstring2
ます。
2. 2つの変数に取り組む
それらが異なる変数である場合は、戦術を少し変更します。curl
その後の出力をキャプチャしますgrep
。
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
3.アレイへの進入
結果を個別の変数ではなく配列に格納することもできます。
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
「string2」の結果は配列の最初または2番目の項目になる可能性があるため、grepの結果が結果を返さない可能性がある場合は、これを処理するのが少し難しいですが、ここでは例としてアプローチ。
4. grepから変数に読み込む
read
プロセス置換(<( ..cmd..)
)とともにコマンドを使用するさらに別の方法。
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
「string1」の検索で何も返されず、「string2」に一致するものがに表示される場合は、これもまたトリッキーです$foo1
。また、このアプローチは、上記の#2または#3よりも移植性が低い傾向があります。