1. Grepping en 1 variable
Essaye ça:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Cela s'exécutera curl1 fois et grep pour les occurrences de string1ou string2.
2. Grepping en 2 variables
Si ce sont des variables différentes, changez légèrement de tactique. Capturez la sortie de curlet ensuite grep.
output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")
3. Entrer dans un tableau
Vous pouvez également stocker les résultats dans un tableau au lieu de variables distinctes.
output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")
Celui-ci est un peu difficile à gérer si vos résultats de grep ne retournent pas de résultats, car les résultats de "string2" peuvent être le premier ou le deuxième élément du tableau, mais je le fournis ici juste comme une démonstration de l'approche.
4. Lecture dans vars de grep
Encore une autre méthode qui utilise la readcommande avec la substitution de processus ( <( ..cmd..)).
$ read -d"\n" foo1 foo2 \
<(curl https://domain.com/file.xml | grep -E "string1|string2")
Cela peut à nouveau être délicat si la recherche de "chaîne1" ne renvoie rien, provoquant l'apparition de correspondances pour "chaîne2" $foo1. De plus, cette approche a tendance à être moins portable que la n ° 2 ou la n ° 3 ci-dessus.