A veces, cuando hago condicionales, necesito que el código no haga nada, por ejemplo, aquí, quiero que Bash no haga nada cuando $a
sea mayor que "10", imprima "1" si $a
es 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.true
en un contexto no condicional, les pediría que lo cambien.if true
Está bien,then true
parece mal.if ! condition; then do something; fi
lugar deif condition; then :; else do something; fi
.Probablemente puedas usar el
true
comando:Una alternativa, en su caso de ejemplo (pero no necesariamente en todas partes) es reordenar su if / else:
fuente
true
yfalse
efectivamente 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.true
yfalse
son 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
$a
obtiene más de 10, por lo$a < 10
que 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 < 10
condició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.