Eu li sobre && e || e eu gostaria de executar dois comandos no caso falso.
Eu tentei, ;
mas isso está sempre funcionando . Eu tentei colocá-lo entre chaves, { command1; command2 }
mas isso resulta em um erro de sintaxe.
Eu quero fazer algo como
command && echo "Ok, continuing" || echo "Check internet connection"; exit 1
que só sai se não houver conexão com a Internet.
command-line
bash
Thomas Weller
fonte
fonte
()
e{}
.Respostas:
Usar parens coloca os comandos em um subshell que nem sempre é o que você deseja. Como alternativa, use chaves:
O truque aqui é que, ao contrário de parens, o comando final entre chaves deve ser seguido por
;
.Por que é necessário um ponto-e-vírgula ou uma nova linha
Um colchete é um argumento válido para um comando. Por exemplo, aqui está uma chave como argumento para
echo
:Conseqüentemente, se o shell vir:
O shell interpreta command1 como não tendo argumentos e command2 como tendo um argumento que consiste no caractere
}
. Um colchete}
é interpretado apenas como fechar um agrupamento se seguir um ponto-e-vírgula ou uma nova linha. Para fazer o trabalho acima:Subshells e a diferença entre
{...}
e(...)
Observe que o seguinte é definido
x
como 10, mas que essa configuração é esquecida antes daecho
execução do comando:Com chaves, por outro lado, a configuração de
x=10
é lembrada:A diferença é que atribuições de variáveis em um subshell não sobrevivem após a conclusão do subshell.
Documentação
De
man bash
:fonte