Normalmente eu uso ;
para combinar mais de um comando em uma linha, mas algumas pessoas preferem &&
. Existe alguma diferença? Por exemplo, cd ~; cd -
e cd ~ && cd -
parece fazer a mesma coisa. Qual versão é mais portátil, por exemplo, será suportada por um subconjunto do bash, como o shell do Android?
bash
shell
syntax
multiplatform
psihodelia
fonte
fonte
;
um ou&&
um? Ou você quer dizer ambos?&&
.Estou usando
&&
porque há muito tempo no computador próximo:mas não ajudou ...;)
cd /tnp/test && rm -rf *
é seguro... ;)fonte
rm -rf /tnp/test
rm /tnp/test/ -rf
para impedir a entrada mortal de erros de cliquesIn
cmd1 && cmd2
,cmd2
só é executado secmd1
for bem-sucedido (retorna 0).Em
cmd1 ; cmd2
,cmd2
é executado em qualquer caso.Ambas as construções fazem parte de um shell compatível com POSIX.
fonte
&&
significa executar o próximo comando se o anterior saiu com o status 0. Pelo contrário, use||
ie para ser executado se o comando anterior sair com um status diferente de 0 e;
executa sempre.Muito útil quando você precisa executar uma ação específica, dependendo se o comando anterior terminou OK ou não.
fonte
Os comandos separados por
;
são executados sequencialmente, independentemente do status de conclusão.Com
&&
, o segundo comando é executado apenas se o primeiro for concluído com êxito (retorna o status de saída 0).Isso é coberto na página de manual do bash em
Lists
. Eu esperava que qualquer shell do tipo Unix suportasse esses dois operadores, mas não sei especificamente sobre o shell do Android.fonte
&&
permite a execução condicional enquanto;
o segundo comando está sempre sendo executado.Por exemplo
command1 && command2
,command2
só será executado quandocommand1
tiver terminado comexit 0
, sinalizando que tudo correu bem, enquanto nocommand1 ; command2
segundo comando sempre será executado, independentemente do resultadocommand1
.fonte
&& é lógico E no bash. Bash tem avaliação de curto-circuito de AND lógico. Esse idioma é uma maneira mais simples de expressar o seguinte:
Considerando que a ; versão é apenas:
fonte