GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire écho à une nouvelle ligne dans les scripts shell bash

La commande echo ajoute automatiquement une nouvelle ligne à la fin. C'est cool.

Mais que se passe-t-il si vous souhaitez afficher uniquement une nouvelle ligne vide ? Ou si vous voulez afficher quelque chose qui contient une nouvelle ligne ?

La bonne nouvelle est que echo vous permet d'utiliser le caractère de retour à la ligne \n pour imprimer une nouvelle ligne dans la même ligne de sortie si vous utilisez le -e choix :

echo -e "Name\nAddress\nPhone Number"

Si vous exécutez la commande ci-dessus, vous obtiendrez ce résultat :

Name
Address
Phone Number

C'est bien, non ? Voyons cela plus en détail.

Une nouvelle ligne est un terme que nous utilisons pour spécifier que la ligne actuelle est terminée et que le texte continuera à partir de la ligne en dessous de la ligne actuelle. Dans la plupart des systèmes de type UNIX, \n est utilisé pour spécifier une nouvelle ligne. Il est appelé caractère de nouvelle ligne.

La commande echo, par défaut, désactive l'interprétation des échappements antislash. Donc, si vous essayez d'afficher une nouvelle ligne en utilisant la séquence d'échappement '\n', vous remarquerez un problème.

$ echo Hello\nworld
Hellonworld

$ echo 'Hello\nworld'
Hello\nworld

Mettre du texte entre guillemets simples en tant que littéral de chaîne ne fonctionne pas non plus.

Ce n'était pas un résultat attendu. Pour imprimer réellement une nouvelle ligne, vous pouvez utiliser le drapeau '-e' pour indiquer à la commande echo que vous souhaitez activer l'interprétation des échappements antislash.

$ echo -e 'Hello\nworld'
Hello
world

Bien, c'est ce que vous recherchez.

Permettez-moi d'autres façons d'afficher le caractère de nouvelle ligne.

écho à une variable contenant une nouvelle ligne

Vous pouvez stocker une chaîne dans une variable bash, puis la répercuter à l'aide du drapeau '-e'.

$ str="Hello\nworld"

$ echo -e $str
Hello
world

Utiliser le caractère '$' au lieu du drapeau -e

Le symbole du dollar, '$' est appelé le caractère "d'expansion" dans bash. C'est le caractère que j'ai utilisé dans l'exemple précédent pour faire référence à la valeur d'une variable dans le shell.

Si vous regardez attentivement l'extrait ci-dessous, vous vous rendrez compte que le caractère d'expansion, dans ce cas, agit pour contenir une valeur temporaire.

$ echo Hello$'\n'world
Hello
world

Ou, vous pouvez utiliser la chaîne entière comme 'variable temporaire' :

$ echo $'Hello\nworld'
Hello
world

Je préférerais utiliser le -e drapeau, cependant.

faites écho à votre echo pour imprimer quelque chose avec une nouvelle ligne

Lorsque vous faites écho à un morceau de texte, la commande echo ajoutera automatiquement une nouvelle ligne (et voici comment vous pouvez l'empêcher) à la fin de votre texte.

Cela signifie que vous pouvez enchaîner plusieurs commandes d'écho pour créer une nouvelle ligne.

$ echo Hello; echo world
Hello
world

Utiliser printf pour imprimer une nouvelle ligne dans le shell Bash

printf est un autre outil de ligne de commande qui imprime essentiellement du texte sur le terminal, mais il vous permet également de formater votre texte.

L'utilisation est très simple et similaire à echo mais un peu plus fiable et cohérente.

$ printf 'Hello\nworld\n'
Hello
world

Comme prévu, vous avez une nouvelle ligne sans utiliser de drapeaux.

Conclusion

Personnellement, je préférerais m'en tenir au drapeau -e ou opter pour la commande printf pour afficher les nouvelles lignes en sortie. Je vous recommande de faire de même, mais n'hésitez pas à expérimenter.


Linux
  1. Comment faire écho à un coup ! ?

  2. Comment changer le shell Cron (sh en bash) ?

  3. Comment comparer des chaînes dans les scripts shell bash

  4. Paramètres spéciaux de Bash expliqués avec 4 exemples de scripts Shell

  5. Comment :Historique Bash/shell illimité ?

Comment créer des documents avec des scripts Bash

Shell Scripting pour les débutants - Comment écrire des scripts Bash sous Linux

Comment utiliser la commande echo dans les scripts Bash sous Linux

Comment installer Linux Bash Shell sur Windows 10

Comment utiliser if-else dans les scripts shell ?

Comment lire les arguments de ligne de commande dans les scripts shell ?