622 votes

shell script : echo sans nouvelle ligne

J'ai un problème avec echo dans mon script :

echo -n "Some string..."

imprime

-n Some string...

et passe à la ligne suivante. Dans la console, cela fonctionne correctement sans nouvelle ligne :

Some string...

2 votes

Quelle implémentation du bourne shell utilisez-vous ? Si j'exécute bash en mode bourne shell, cela fonctionne bien ici. De plus, il est peu probable que vous utilisiez réellement un shell bourne comme shell interactif, non ?

6 votes

Sur Ubuntu : echo -ne "text without new line: "; echo "some text";

0 votes

Je sais que c'est très ancien, mais cela fonctionne pour moi sous Windows 10, pour ajouter un point sans nouvelle ligne : echo | set /p=".".

3voto

Juste pour le la distribution Linux la plus populaire , Ubuntu et son Bash :

  1. Vérifiez quel shell vous utilisez. En général, le shell ci-dessous fonctionne, sinon voir ceci :

    echo $0

  2. Si les caractères ci-dessus s'impriment bash alors la méthode ci-dessous fonctionnera :

    printf "hello with no new line printed at end"

    Ou

    echo -n "hello with no new line printed at end"

2voto

Riccardo La Marca Points 209
enable -n echo
echo -n "Some string..."

0 votes

Une explication s'impose. Par exemple, quelle est l'idée/le principe ? Sur quelle version de Bash a-t-elle été testée ? Sur quel système d'exploitation (y compris, par exemple, la distribution et la version de Linux) ? Veuillez répondre par éditer (modifier) votre réponse pas ici dans les commentaires ( sans "Editer :", "Mettre à jour :", ou similaire - la réponse doit apparaître comme si elle avait été écrite aujourd'hui).

1voto

rɑːdʒɑ Points 1346

Je crois qu'actuellement, votre sortie s'imprime comme suit

~ echo -e "String1\nString2"
String1
String2

Vous pouvez utiliser xargs pour obtenir une sortie standard multi-lignes sur la même ligne.

 ~ echo -e "String1\nString2" | xargs
String1 String2

 ~

1voto

Daemon42 Points 111

Notez que /usr/bin/echo y /bin/echo sur AIX ne soutiennent aucun argument, donc ni -n ni -e fonctionnent si vous utilisez sh ou KornShell ( ksh ) des coquillages.

_Coquille C y [Bash](https://en.wikipedia.org/wiki/Bash%28Unix_shell%29) ont leur propre echo qui soutient -n .
Ceci est pertinent, car beaucoup de scripts shell utilisent explicitement sh ou KornShell.

AIX dispose de /usr/bin/printf comme suggéré dans certaines réponses précédentes,

$ printf "whatever"

est équivalent à echo -n "whatever" donde -n est prise en charge.

0voto

Amit Singh Points 1

Lorsque vous écrivez votre script shell, utilisez toujours #!/usr/bin/env bash comme première ligne.

Ce shell n'omet ni ne manipule les séquences d'échappement.

Exemple :

echo "This is first \\n line"

imprime

This is first \n line.

0 votes

Une explication pour #!/usr/bin/env bash est en Quelle est la différence entre "#!/usr/bin/env bash" et "#!/usr/bin/bash" ? .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X