1. Grepping en 1 variable
Essaye ça:
foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")
Cela s'exécutera curl
1 fois et grep pour les occurrences de string1
ou string2
.
2. Grepping en 2 variables
Si ce sont des variables différentes, changez légèrement de tactique. Capturez la sortie de curl
et 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 read
commande 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.
Sérieusement, mec, il y a comme un million de façons d'écorcher ce chat.
la source