A veces, cuando hago condicionales, necesito que el código no haga nada, por ejemplo, aquí, quiero que Bash no haga nada cuando $asea mayor que "10", imprima "1" si $aes menor que "5", de lo contrario, imprima "2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Sin embargo, esto hace un error. ¿Hay un comando que no haga nada y que tampoco ralentice mi script?
bash
conditional
noop
Pueblo
fuente
fuente

true. Está integrado en el caparazón y no hace nada.:alguien lo escribe en mi equipo, les pediría que lo cambien.trueen un contexto no condicional, les pediría que lo cambien.if trueEstá bien,then trueparece mal.if ! condition; then do something; filugar deif condition; then :; else do something; fi.Probablemente puedas usar el
truecomando:Una alternativa, en su caso de ejemplo (pero no necesariamente en todas partes) es reordenar su if / else:
fuente
trueyfalseefectivamente no hay operaciones en lo que respecta al script, pero en principio podrían bifurcar algunos shells que aceptan esta sintaxis, por lo que tal vez:sea mejor.trueyfalseson incorporados. Para los depósitos de más edad,true,false, e incluso:podría ser comandos externos (aunque probablemente vería este último sólo en muy antiguas conchas).:simplemente porque es más explícito cuál es la intenciónAunque no estoy respondiendo a la pregunta original sobre el comando no-op, muchos (si no la mayoría) de los problemas cuando uno puede pensar " en esta rama no tengo que hacer nada " pueden evitarse simplemente reestructurando la lógica para que esta rama gane No ocurra.
Intento dar una regla general usando el ejemplo de OP
tenemos que evitar una rama donde
$aobtiene más de 10, por lo$a < 10que una condición general se puede aplicar a todos los demás, después de la condición.En términos generales, cuando se dice no hacer nada cuando X , entonces reformular como evitar una sucursal en la que X . Por lo general, puede evitarlo simplemente negando X y aplicándolo a todas las demás condiciones.
Por lo tanto, el ejemplo de OP con la regla aplicada puede reestructurarse como:
Solo una variación de lo anterior, que incluye todo en la
$a < 10condición:(Para este ejemplo específico, la reestructuración de @Flimzys es ciertamente mejor, pero quería dar una regla general para todas las personas que buscan cómo no hacer nada).
fuente
echo "put stuff here"interrumpirá algunos de los usos que no son de inicio de sesión (por ejemplo, scp se rompe), y solo los espacios en blanco / comentarios causan un error de tiempo de ejecución.