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

Cette question a déjà une réponse ici :

Commentaires

  • Lexemple fonctionne pour moi; quest-ce que vous obtenez?
  • @JeffSchaller Désolé, jai clarifié les choses. Ce que je veux dire, cest que «\» est nécessaire pour certaines choses mais pas pour dautres. Je veux juste en connaître le bon usage. Et pour une raison étrange \ ne peut pas être mis en évidence par lastérisque dans les commentaires
  • \ est une continuation explicite; bash vous donne PS2 si la commande nest pas encore terminée. Est-ce la confusion?
  • Je ' ne suis pas sûr que ce soit tout à fait un doublon, du moins comme demandé dans le titre. Bien que lOP pose la question dans le contexte de & &, il est encore assez général, une réponse plus complète pourrait être donnée qui nest pas spécifique à cela.

Réponse

Si la déclaration serait 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 par 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.

Commentaires

  • Donc " continuation " est le terme que je recherchais. Le manuel Bash explique cela dans la section Citations, donc jai trouvé ça … Maintenant, vous avez dit que lon peut ' t terminer une ligne avec && et cela donne linvite PS2. Quels sont les autres cas ? Y a-t-il une liste quelque part dans le manuel bash?

Réponse

Lune des règles de style de script I  » rencontrés au cours de ma vie professionnelle dans une grande entreprise informatique, mont obligé à ne pas utiliser plus de 80 caractères par ligne dans un shellscript et indentation après avoir rompu la ligne. De plus, je devais casser la ligne avant un tuyau ou & & ou ||. Comme:

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

Le but était davoir une lisibilité claire.

Commentaires

  • Jai fait ça aussi, jusquà ce que quelquun vous fasse remarquer que vous pouvez omettre le \ si vous mettez le & &, || , et | sur la ligne précédente: une meilleure lisibilité.
  • @ole yup jai compris, mais sil y a une ligne directrice à suivre, mon code ne passerait pas ' vérifier si je ' faire cela
  • +1. Jai tendance à utiliser le style mentionné par @OleTange (au moins pour les commandes longues ou compliquées) – mais le style que vous mentionnez a lavantage évident que vous pouvez voir de quel type de suite il sagit simplement en regardant uniquement la ligne elle-même, vous ne ' Il faut également regarder la fin de la ligne précédente. Joli. Je ' ne sais pas si je laime suffisamment pour me forcer à changer mes habitudes, mais jaime ça.
  • Franchement, je préfère mettre le && et || au début des lignes. Tout comme je mets les OR et AND au début des lignes de mes clauses SQL WHERE.
  • IMO, il y a un énorme avantage à la cohérence. Si dans certains cas vous DEVEZ utiliser ` and in other cases it is optional, I would prefer to use `partout où ma commande continue sur la ligne suivante. En analysant un script, vous pouvez facilement manquer quune ligne se poursuit car elle se termine par && ou || ou |. (Et comme le dit @ErikE, je préfère en fait avoir mes && et || sur la ligne suivante).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *