Às vezes, ao fazer condicionais, preciso que o código não faça nada; por exemplo, aqui, quero que o Bash não faça nada quando $a
for maior que "10", imprima "1" se $a
for menor que "5", caso contrário, imprima "2":
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
Isso comete um erro. Existe um comando que não fará nada e também não diminua a velocidade do meu script?
bash
conditional
noop
Vila
fonte
fonte
true
. Está embutido no shell e não faz nada.:
for escrita por alguém da minha equipe, eu pediria que eles mudassem.true
em um contexto não condicional, gostaria que eles mudassem.if true
está bem,then true
parece errado.if ! condition; then do something; fi
vez deif condition; then :; else do something; fi
.Você provavelmente pode apenas usar o
true
comando:Uma alternativa, no seu caso de exemplo (mas não necessariamente em todos os lugares), é reordenar o seu if / else:
fonte
true
efalse
for efetivamente não operacional no que diz respeito ao script, mas, em princípio, eles poderão criar algumas conchas que aceitem essa sintaxe, então talvez:
seja melhor.true
efalse
são embutidos. Para os reservatórios mais antigos,true
,false
, e até mesmo:
pode ser comandos externos (embora você provavelmente veria esta última apenas no muito conchas de idade).:
simplesmente porque é mais explícito que a intenção éEmbora eu não esteja respondendo à pergunta original referente ao comando no-op, muitos (se não a maioria) dos problemas em que alguém pode pensar " neste ramo, não preciso fazer nada " podem ser contornados simplesmente reestruturando a lógica para que esse ramo ganhe. ocorrer.
Eu tento dar uma regra geral usando o exemplo de OPs
temos que evitar um ramo em que
$a
obtenha mais de 10, para$a < 10
que uma condição geral possa ser aplicada a todas as outras condições a seguir.Em termos gerais, quando você diz não fazer nada quando X , então reformulá-la como evitar um ramo onde X . Normalmente, você pode fazer com que a evitação aconteça simplesmente negando o X e aplicando-o a todas as outras condições.
Portanto, o exemplo dos POs com a regra aplicada pode ser reestruturado da seguinte maneira:
Apenas uma variação do exposto, incluindo tudo na
$a < 10
condição:(Para este exemplo específico, a reestruturação da @Flimzys é certamente melhor, mas eu queria dar uma regra geral para todas as pessoas que pesquisam como não fazer nada.)
fonte
echo "put stuff here"
ele interromperá alguns dos usos que não são de logon (por exemplo, o scp é quebrado) e apenas espaço em branco / comentários causa um erro de tempo de execução.