1. Masuk ke dalam 1 variabel
Coba ini:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Ini akan berjalan curl
1 kali dan menerima kejadian string1
atau string2
.
2. Memahami 2 variabel
Jika mereka variabel yang berbeda maka ubah sedikit taktik. Tangkap output dari curl
dan kemudian grep
sesudahnya.
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
3. Grepping ke dalam array
Anda juga bisa menyimpan hasil dalam array bukan variabel yang terpisah.
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
Yang ini agak sulit untuk ditangani jika hasil Anda dari grep mungkin tidak mengembalikan hasil, karena hasil dari "string2" mungkin item pertama atau kedua dalam array, tapi saya menyediakannya di sini hanya sebagai demonstrasi dari pendekatan.
4. Membaca ke dalam vars dari grep
Namun metode lain yang memanfaatkan read
perintah bersama dengan proses substitusi ( <( ..cmd..)
).
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
Ini lagi bisa rumit jika pencarian "string1" tidak menghasilkan apa-apa, menyebabkan kecocokan untuk "string2" muncul di $foo1
. Juga pendekatan ini cenderung kurang portabel daripada # 2 atau # 3 di atas.