conditionnel opérateur binaire prévu dans le script shell
Je cherche un programme simple pour comparer les valeurs de chaîne stockées sur un fichier de log, et a été une erreur comme ci-dessous,
#!/bin/bash
check_val1="successful"
check_val2="completed"
log="/compile.log"
if [[ grep $check_val1 $log -ne $check_val1 || grep $check_val2 $log -ne $check_val2 ]];
then
echo "No Error"
else
echo "Error"
fi
Error:
./simple.sh: line 7: conditional binary operator expected
./simple.sh: line 7: syntax error near `$check_val1'
./simple.sh: line 7: `if [[ grep $check_val1 $log -ne $check_val1 || grep $check_val2 $log -ne $check_val2 ]];'
OriginalL'auteur Angus | 2014-08-04
Vous devez vous connecter pour publier un commentaire.
Problème est dans votre
if [[...]]
expression où vous utilisez 2grep
commandes sans l'aide de la commande de substitution c'est à dire$(grep 'pattern' file)
.Cependant, au lieu de:
Vous pouvez utiliser
grep -q
:Comme par
man grep
:grep -q
ne rien imprimer sur la sortie standard stdout. Elle retourne la réussite/l'échec de la valeur de retour. Si vous supprimez-q
ensuite, il permet d'imprimer les valeurs.Le fichier journal contient la chaîne "succès" et "quitter".[root@a a~]# grep -e "succès" -e "partir" de la compilation.log [root@aa~]# grep -e "succès" -e "partir" de la compilation.log > [root@aa~]# cat [root@aa ~]# grep -e "suess" -e "leang" compiler.log > [root@aa ~]# cat un
Vous pouvez le faire:
grep -iq -e "SUCCESS" -e "Leaving" "compile.log"
pour ce cas.-e pour le patern et -i pour ignorer la casse. Grâce anubhava.
OriginalL'auteur anubhava
[[
trigers la commande test. Le Test ne prend pas en charge les tests de l'état de sortie d'une commande en tapant la commandeJe suis venu ici pour chercher; brièvement ce que les crochets signifient. Merci.
OriginalL'auteur Robert Luo