dans le code ci-dessous directement son passe à l'état autre que siSi la condition ne fonctionne pas dans bash
#!/bin/bash
var=0
if [ "$var" -eq "0" ]
then
echo $var
else
echo $var
fi
dans le code ci-dessous directement son passe à l'état autre que siSi la condition ne fonctionne pas dans bash
#!/bin/bash
var=0
if [ "$var" -eq "0" ]
then
echo $var
else
echo $var
fi
Ce code fonctionne manifestement exactement comme indiqué, sans changement d'aucune sorte.
Mettre dans un script appelé testscript
, et en cours d'exécution PS4=':$LINENO+' bash -x testscript
(pour imprimer chaque commande appelée précédé par le numéro de ligne dans le fichier source qui il vient), on obtient le résultat suivant:
:2+var=0
:3+'[' 0 -eq 0 ']'
:5+echo 0
0
maintenant , regardons les numéros de ligne dans cette trace, contre les numéros de ligne dans le fichier source d'origine:
#!/bin/bash # line 1
var=0 # line 2 -- :2+var=3
if [ "$var" -eq "0" ] # line 3 -- :3+'[' 0 -eq 0 ']'
then # line 4
echo $var # line 5 -- :5+echo 0
else # line 6
echo $var # line 7
fi
... et le fait que nous sommes allés à la ligne 2, ligne 3 et ligne 5 dans cet ordre signifie que nous devons réellement ok la branche de la vérité, pas la branche else
.
#!/bin/bash
var=0
if [ "$var" -eq "0" ]
then
echo $var
echo "Hello"
else
echo $var
echo "ELSE"
fi
Il imprimera: 0 Bonjour
signifie qu'il va se boucle uniquement. Vérifiez une fois
Votre code semble bien ... sauf les conditions 'if' et' else' ont le même résultat. Comment pouvez-vous faire la différence? – eigenchris
À l'exception du problème de sortie indiqué par @eigenchris, le code que vous avez affiché fonctionne correctement. – John1024