Est-il possible de tuyau de plusieurs commandes dans un if?
Le cadre d'un script que je suis en train d'écrire doit vérifier plusieurs fichiers texte pour les mêmes chaînes. Avant j'ai juste eu à vérifier un fichier, donc j'ai eu une longue liste de chaînes de caractères dans cateogies de recherche qui sont définis comme des variables. Plus tard dans le script de la variabled sont appelés et la sortie à l'écran si il y a un match:
category_1=$(sudo zcat myfile | egrep -c 'Event 1|Event 2|Event 3')
category_2=$(sudo zcat myfile | egrep -c 'Event 4|Event 5|Event 6')
category_3=$(sudo zcat myfile | egrep -c 'Event 7|Event 8|Event 9')
...
echo Category 1
if [[ $category_1 -ge 2 ]];then
echo There were $category_1 events
elif [[ $category_1 -eq 1 ]]; then
echo There was $category_1 event
fi
etc, etc...
Maintenant, j'ai besoin de le changer pour que je puisse vérifier la grepped cordes contre plusieurs fichiers texte. J'ai essayé de définir les nouveaux fichiers que les variables et les tuyaux dans l'instruction if avec la commande grep variable en vain:
category_1=$(egrep -c 'Event 1|Event 2|Event 3')
category_2=$(egrep -c 'Event 4|Event 5|Event 6')
category_3=$(egrep -c 'Event 7|Event 8|Event 9')
myfile=$(sudo zcat myfile)
myfile2=$(sudo zcat myfile2)
myfile3=$(sudo zcat myfile3)
...
echo Category 1 - Myfile
if [[ myfile | $category_1 -ge 2 ]];then
echo There were $category_1 events in myfile
elif [[ myfile | $category_1 -eq 1 ]]; then
echo There was $category_1 event in myfile
fi
Il semble que je ne peux pas le tuyau de commandes dans une instruction if.
OriginalL'auteur Hxwk | 2013-12-16
Vous devez vous connecter pour publier un commentaire.
Utilisation
$(...)
pour capturer la sortie d'une commande dans une chaîne de caractères:Vous pouvez définir une fonction qui contient le code que vous souhaitez répéter.
Merci pour de me pointer dans la bonne direction, je vais regarder dans les fonctions
OriginalL'auteur choroba
Vous pouvez utiliser des tuyaux en
if
, mais vous mélangez deux choses.Vous utilisez
$category_1
avec tuyau; et$category_1
n'est pas une commande.Vous pouvez utiliser une commande de substitution à la place de la variable.
et ainsi de suite.
Vous pouvez également utiliser des variables au lieu de commandes, mais il sera un peu étrange.
OriginalL'auteur Igor Chubin
Vous pouvez utiliser une commande telle que: if [ "$maison" = "nice" ]||[ "$maison" = "mauvais" ]... à faire le travail
OriginalL'auteur Nicki Johanna