GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser la commande echo sans retour à la ligne

La commande echo est un moyen pratique d'imprimer quoi que ce soit dans les scripts shell.

Par défaut, il ajoute toujours un caractère de nouvelle ligne. Ainsi, si vous exécutez plusieurs commandes echo, chaque sortie s'affiche sur une nouvelle ligne.

Mais cela pourrait être gênant dans les situations où vous devez imprimer avec la commande echo mais sans la nouvelle ligne.

Imaginez-vous essayer d'imprimer la série de Fibonacci :1, 1, 2, 3, 5, 8, 13, 21, 34, 55

Vous pouvez utiliser le -n drapeau de la commande echo pour imprimer sans retour à la ligne :

echo -n "Hello World"

Vous remarquerez que l'invite s'affiche dans la même ligne immédiatement après Hello World now.

Examinons-le plus en profondeur.

Imprimer la commande echo sans nouvelle ligne

Prenons une simple boucle for qui imprime le contenu d'un tableau dans un script bash et vérifions sa sortie.

$ bash_array=(1 2 3 4)

$ for i in ${bash_array[@]}; do
    echo $i
done
1
2
3
4

Comme vous pouvez le voir, chaque fois que la commande echo est exécutée, la sortie est affichée sur une nouvelle ligne. Parfois, c'est ce que vous voulez, d'autres fois, vous voulez que la sortie continue sur la même ligne sans commencer par la nouvelle ligne.

Rencontrez le drapeau "-n"

L'implémentation bash de la commande echo ajoute généralement un "\n" (un caractère d'échappement pour signifier une nouvelle ligne) à la sortie. Le drapeau "-n" n'ajoute pas de "\n" à la sortie.

$ bash_array=(1 2 3 4 5 6 7 8)

$ for i in ${bash_array[@]}; do
    echo -n $i
done
12345678

Comme vous pouvez le voir, tous les chiffres sont maintenant affichés sur une seule ligne. Cela signifie que chaque fois que la commande echo a été exécutée, elle n'a pas été renvoyée à une nouvelle ligne.

echo -n n'a pas fonctionné. Et maintenant ?

Dans certains cas, en utilisant echo -n imprime également le -n caractère au lieu d'imprimer le texte sans retour à la ligne.

C'est possible s'il existe une implémentation séparée de la commande echo par le shell que vous utilisez.

Confus? Certaines distributions et certains shells peuvent avoir leur propre implémentation de certaines commandes shell intégrées. echo est l'une de ces commandes.

Voici quelques trucs que vous pouvez essayer.

Ajoutez le caractère shebang suivi de /bin/bash pour vous assurer que votre script shell utilise bash shell.

#!/bin/bash

Si cela ne fonctionne pas, vous pouvez essayer d'utiliser la commande printf au lieu de echo.

Par défaut, printf n'ajoute pas le caractère de saut de ligne :

printf "Something without newline"

Vous devez fournir explicitement le caractère de saut de ligne \n :

printf "Something with newline\n"

La commande printf se comporte comme la commande printf en C et vous pouvez l'utiliser pour imprimer des sorties formatées plus complexes.

La commande printf a un comportement beaucoup plus cohérent. echo convient aux choses simples, mais je conseille d'utiliser printf pour tout ce qui est plus compliqué.

J'espère que ce tutoriel simple vous aidera à contrôler le comportement de la nouvelle ligne dans les scripts bash.


Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande history sous Linux

  3. Comment utiliser la commande Su sous Linux

  4. Comment utiliser la commande basename ?

  5. Comment utiliser la commande d'écran Linux

COMMENT UTILISER TAIL COMMAND

Comment utiliser la commande head

Comment utiliser la commande PS

Comment utiliser la commande TOP

Comment utiliser la commande d'arrêt de Linux

Comment utiliser grep sous Linux