Parfois, lors de la création de conditions, j'ai besoin que le code ne fasse rien, par exemple, ici, je veux que Bash ne fasse rien quand $a
est supérieur à "10", imprime "1" si $a
est inférieur à "5", sinon, imprime "2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Cela fait cependant une erreur. Existe-t-il une commande qui ne fera rien et ne ralentira pas non plus mon script?
bash
conditional
noop
Village
la source
la source
true
. Il est intégré à la coque et ne fait rien.:
est écrit par quelqu'un de mon équipe, je le ferais changer.true
dans un contexte non conditionnel, je lui demanderais de le changer.if true
est bien,then true
semble faux.if ! condition; then do something; fi
place deif condition; then :; else do something; fi
.Vous pouvez probablement simplement utiliser la
true
commande:Une alternative, dans votre cas d'exemple (mais pas nécessairement partout) est de réorganiser votre if / else:
la source
true
et que vousfalse
êtes effectivement non-op en ce qui concerne le script, mais en principe, ils pourraient créer des shells acceptant cette syntaxe, alors c'est peut:
- être mieux.true
etfalse
sont intégrés. Pour les réservoirs plus âgés,true
,false
et même:
peut - être des commandes externes (bien que vous verriez probablement celle - ci que dans très coquilles vieux).:
simplement parce que l'intention est plus expliciteBien 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
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:
Juste une variation de ce qui précède, en incluant tout dans la
$a < 10
condition:(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.)
la source
echo "put stuff here"
cela cassera certaines des utilisations non liées à la connexion (par exemple, scp est cassé), et seuls les espaces / commentaires provoquent une erreur d'exécution.