Bien que je ne réponde pas à la question initiale concernant la commande no-op, de nombreux problèmes (sinon la plupart) lorsque l'on peut penser " dans cette branche je n'ai rien à faire " peuvent être contournés en restructurant simplement la logique pour que cette branche gagne ça ne se produit pas.
J'essaye de donner une règle générale en utilisant l'exemple des OP
ne rien faire quand $ a est supérieur à "10", imprimer "1" si $ a est inférieur à "5", sinon, imprimer "2"
nous devons éviter une branche où $a
obtient plus de 10, afin $a < 10
qu'une condition générale puisse être appliquée à toutes les autres, condition suivante.
De manière générale, quand vous dites ne rien faire quand X , puis reformulez comme éviter une branche où X . Habituellement, vous pouvez faire l'évitement en annulant simplement X et en l'appliquant à toutes les autres conditions.
Ainsi, l'exemple des OP 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, en incluant tout dans la $a < 10
condition:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(Pour cet exemple spécifique, la restructuration @Flimzys est certainement meilleure, mais je voulais donner une règle générale à toutes les personnes qui cherchent à ne rien faire.)
true
. Il est intégré à la coque et ne fait rien.