Quelle commande signifie "Ne rien faire" dans un conditionnel dans Bash?
Parfois, lorsque je fais des conditions, j'ai besoin du code pour ne rien faire, par exemple, ici, je veux que Bash ne fasse rien Quand $a
est supérieur à "10", imprimer "1" Si $a
est inférieur à "5", sinon, imprimer "2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Cela fait une erreur cependant. Y a-t-il une commande qui ne fera rien et ne ralentira pas non plus mon script?
3 réponses
Vous pouvez probablement simplement utiliser la commande true
:
if [ "$a" -ge 10 ]; then
true
elif [ "$a" -le 5 ]; then
echo "1"
else
echo "2"
fi
Une alternative, dans votre exemple (mais pas nécessairement partout) est de réorganiser votre if / else:
if [ "$a" -le 5 ]; then
echo "1"
elif [ "$a" -lt 10 ]; then
echo "2"
fi
Bien que je ne réponde pas à la question initiale concernant la commande no-op, de nombreux problèmes (sinon la plupart) quand on peut penser "dans cette branche, Je ne dois rien faire" peuvent être contournés en restructurant simplement la logique pour que cette branche ne se produise pas.
J'essaie de donner une règle générale en utilisant L'exemple OPs
Ne rien faire lorsque $a est supérieur à "10", imprimer " 1 "si $a est inférieur à "5", sinon, imprimer " 2 "
Nous devons éviter un branche où $a
obtient plus de 10, donc $a < 10
en tant que condition générale peut être appliquée à toutes les autres conditions suivantes.
En général, quand vous dites ne rien faire lorsque X, puis reformuler comme éviter une branche où X. Habituellement, vous pouvez faire en sorte que L'évitement se produise en annulant simplement X et en l'appliquant à toutes les autres conditions.
Ainsi, l'exemple OPs avec la règle appliquée peut être restructuré comme suit:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
Juste une variation de ce qui précède, enfermant tout dans la condition $a < 10
:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(pour cet exemple spécifique la restructuration de@Flimzys est certainement meilleure, mais je voulais donner une règle générale à toutes les personnes cherchant à ne rien faire.)