Comment le ne mot-clé “si” tester si une valeur est vrai ou faux?
En script bash
if [ 1 ]
then
echo "Yes"
else
echo "No"
fi
De sortie: Yes
Il représente que le " 1 " est considérée comme vraie valeur.
Mais dans le code:
word = Linux
letter = nuxi
if echo "$word" | grep -q "$letter"
then
echo "Yes"
else
echo "No"
fi
De Sortie: Aucune
Mais echo "$word" | grep -q "$letter"
sera de retour 1, pourquoi le résultat n'est Pas.
comment le mot-clé if
tester la valeur renvoyée par la commande après if
?
Vous pouvez trouver ma réponse ici pour être utile.
OriginalL'auteur kit.yang | 2010-10-13
Vous devez vous connecter pour publier un commentaire.
La valeur de retour d'une commande est cochée.
[ 1 ]
a une valeur de retour de0
(true). Toute autre valeur de retour (comme1
) indique une erreur.Vous pouvez afficher la valeur de retour de la dernière commande exécutée à l'aide de la
$?
variable:Il ressemble à
0
est une expression qui s'évalue àtrue
.[ 0 = 1 ]
a une valeur de retour de1
(valeur attendue) et[ 0 = 0 ]
a une valeur de retour de0
. Exécuterman test
pour plus d'informations surtest
(un.k.un.[
)[ 1 ]
ou[ 0 ]
évalue à true, cartest
/[
avec un seul paramètre vérifie simplement si la chaîne de paramètre (ici1
ou0
) est non-vide. oie[ "" ]
serait fausse.OriginalL'auteur Lekensteyn
Dans unix terre, 0 est vraie et 1 est fausse.
Pour votre premier exemple:
"Si" vérifie le code de sortie de la commande donné pour vrai/faux (c'est à dire zéro/non-nulle).
Les crochets invoquer le "test" de commande (voir "man test" pour plus d'informations) et de donner le code de sortie pour si.
"test 1" (ou le "test any_string") renvoie la valeur true (0) si "Oui" est de sortie.
Pour votre deuxième exemple, cette sorties "Non" parce que "nuxi" n'est pas trouvé dans "Linux", si vous changez de "nuxi" à "nux" (c'était peut-être une faute de frappe?) et enlever les espaces autour de l' = alors vous obtiendrez le comportement que vous attendez. par exemple,
OriginalL'auteur Nick
C'est parce que le grep pas réussi à trouver le $lettre dans $mot, d'où le code de sortie est 1. Quand un processus dans linux retourner un code autre que 0, alors cela signifie qu'il a échoué. 0 signifie qu'il est sorti avec succès. Vous pouvez le vérifier en
echo "Linux" | grep -d "nuxi"; echo $?
Sur l'autre main dans le monde des scripts 0 signifie false et 1 signifie vrai. Ainsi, le grep pas réussi à trouver le mot et les envoyer 1 comme un code de sortie pour s', qui a eu comme une véritable valeur.
OriginalL'auteur Ibrahim