Esta pergunta já tem uma resposta aqui :
Comentários
- O exemplo funciona para mim; o que você ganha?
- @JeffSchaller Desculpe, deixei isso mais claro. O que quero dizer é que `\` é necessário para algumas coisas, mas não para outras. Eu só quero saber o uso adequado disso. E por alguma razão estranha \ não pode ser destacado pelo asterisco nos comentários
- \ é uma continuação explícita; bash fornece PS2 se o comando ainda não estiver completo. É essa a confusão?
- Eu ' não tenho certeza se esta é uma duplicata, pelo menos como perguntado no título. Embora o OP pergunte no contexto de & &, ainda é geral o suficiente para que uma resposta mais abrangente possa ser fornecida que não seja específica para isso.
Resposta
Se a afirmação estiver correta sem continuação, você precisa usar \
. Portanto, o seguinte funciona sem barra invertida, já que você não pode “terminar um comando com um &&
:
echo 1 && echo 2
Aqui, você precisa da barra invertida:
echo 1 2 3 \ 4
ou
echo 1 \ && echo 2
Caso contrário, bash executaria o comando logo após processar a primeira linha sem esperar pela próxima.
Comentários
- Então " continuation " é o termo que eu estava procurando. O manual do Bash explica isso na seção de citações, então eu encontrei isso … Agora, você disse que pode ' t terminar uma linha com
&&
e forneceráPS2
prompt. Quais são alguns dos outros casos ? Existe uma lista em algum lugar do manual do bash?
Resposta
Uma das diretrizes de estilo de script I ” que encontrei durante minha vida profissional em uma grande empresa de TI, obrigou-me a não usar mais de 80 caracteres por linha em um shellscript e recuo após quebrar a linha. Além disso, tive que quebrar a linha antes de um tubo ou & & ou ||. Como:
command1 \ && command2 \ || command3 \ | command4
O objetivo era ter uma legibilidade clara.
Comentários
- Eu também fiz isso, até que alguém disse que você pode deixar de fora o \ se você colocar o & &, || , e | na linha anterior: legibilidade ainda melhor.
- @ole yup entendi, mas se houver uma diretriz a seguir, meu código não ' passaria no revise se eu ' d faço isso
- +1. Eu tendo a usar o estilo mencionado por @OleTange (pelo menos para comandos longos ou complicados) – mas o estilo que você mencionou tem a vantagem clara de que você pode ver que tipo de continuação é apenas olhando apenas para a própria linha, ' não preciso olhar também para o final da linha anterior. Legal. Eu ' Não tenho certeza se gosto o suficiente para me forçar a mudar meus hábitos, mas gosto disso.
- Francamente, prefiro colocar o
&&
e||
no início das linhas. Assim como colocoOR
eAND
no início das linhas em minhas cláusulas SQL WHERE. - IMO, há um grande benefício na consistência. Se em alguns casos você DEVE usar
` and in other cases it is optional, I would prefer to use
`em todos os lugares onde meu comando continuar na próxima linha. Ao escanear um script, você pode facilmente perder que uma linha continua porque termina com&&
ou||
ou|
. (E como @ErikE diz, eu realmente prefiro ter meus&&
e||
na próxima linha).