web-dev-qa-db-fra.com

Syntaxe du shell: comment utiliser correctement \ pour couper les lignes?

J'avais l'habitude de croire que la manière appropriée de briser les lignes d'une liste est

command1 && \
command2

Il s'est avéré que ce n'est pas le cas, on n'a pas besoin de \

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

La même chose fonctionne avec des tuyaux | de la même façon.

Les sections de la page de manuel bash sur le pipelining et les listes n'ont pas éclairé cela. Ainsi, ma question est: quel est le bon usage de \ pour briser les longues files d'attente?

57

Si l'instruction est correcte sans suite, vous devez utiliser \. Par conséquent, ce qui suit fonctionne sans barre oblique inverse, car vous ne pouvez pas terminer une commande avec un &&:

echo 1 &&
echo 2

Ici, vous avez besoin de la barre oblique inverse:

echo 1 2 3 \
4

ou

echo 1 \
&& echo 2

Sinon, bash exécuterait la commande juste après avoir traité la première ligne sans attendre la suivante.

68
choroba

L'une des directives de style de script que j'ai rencontrées au cours de ma vie professionnelle dans une grande entreprise informatique, m'a obligé à ne pas utiliser plus de 80 caractères par ligne dans un shellscript et à indenter après avoir rompu la ligne. De plus, j'ai dû couper la ligne avant un tuyau ou && ou ||. Comme :

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

L'objectif était d'avoir une lisibilité claire.

22
saussure