Anche se non sto rispondendo alla domanda originale concering il comando no-op, molti (se non la maggior parte) i problemi quando si possa pensare "in questo ramo che devo fare nulla" può essere aggirato semplicemente ristrutturazione della logica in modo che questo ramo non si verifichi.
cerco di dare una regola generale utilizzando il PO esempio
fare nulla quando $ a è maggiore di "10", stampa "1" se $ a è inferiore a "5", in caso contrario, print "2"
dobbiamo evitare un ramo in cui $a
ottiene più di 10, in modo $a < 10
come condizione generale può essere applicata a tutti gli altri, a seguito di condizioni.
In termini generali, quando si dice fare nulla quando X, quindi riformulare come evitare un ramo dove X. Di solito è possibile evitare l'annullamento semplicemente annullando X e applicandolo a tutte le altre condizioni.
Quindi l'esempio OP con la regola applicata può essere ristrutturato come:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
solo una variante di quanto sopra, che racchiude tutto ciò che nella condizione $a < 10
:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(Per questo esempio specifico @Flimzys restructuring è sicuramente meglio, ma volevo dare una regola generale a tutte le persone che cercavano come non fare nulla.)
fonte
2014-01-12 04:30:23
per l'istruzione,: è un operatore che esegue "true". Preferisco di gran lunga il vero in casi come questi, poiché è molto più facile da leggere. – SaintHax
@SaintHax No, non viene eseguito 'true'. È incorporato nella shell e non fa nulla. – Barmar
è integrato nella shell (è corretto), restituisce true (stato 0) esattamente come fa true ed è più difficile da leggere. Bash è un linguaggio DevOps, e se ':' è scritto da qualcuno nel mio team, vorrei che lo cambiasse. – SaintHax