Sintaxe da Shell: Como usar corretamente \ para quebrar linhas? [duplicado]

32

Eu costumava acreditar que a maneira apropriada de quebrar as linhas em uma lista é

command1 && \
command2

Descobrimos que não é assim, não é necessário \

$ [  $(id -u) -eq 1000  ] &&                                                   
> echo yes
yes

O mesmo funciona com pipes | da mesma maneira.

As seções da página homem bash no pipelining e listas não lançaram nenhuma luz sobre isso. Assim, minha pergunta é: qual é o uso adequado de \ para quebrar linhas longas?

    
por Sergiy Kolodyazhnyy 05.05.2016 / 18:48

2 respostas

39

Se a declaração estiver correta sem continuação, você precisará usar \ . Portanto, o seguinte funciona sem uma barra invertida, pois você não pode finalizar um comando com && :

echo 1 &&
echo 2

Aqui, você precisa da barra invertida:

echo 1 2 3 \
4

ou

echo 1 \
&& echo 2

Caso contrário, o bash executaria o comando logo após processar a primeira linha sem esperar pelo próximo.

    
por 05.05.2016 / 18:54
16

Uma das diretrizes de estilo de script que encontrei durante minha vida profissional em uma grande empresa de TI, obrigou-me a usar no máximo 80 caracteres por linha em um shellscript e recuando após quebrar a linha. Além disso, tive que quebrar a linha antes de um cano ou & & ou ||. Como:

command1 \
  && command2 \
  || command3 \
  | command4

O objetivo era ter uma legibilidade clara.

    
por 05.05.2016 / 21:03