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=".".

0voto

Akhilesh Points 375

J'ai eu le même problème avec IBM z/OS alors j'ai utilisé imprimer au lieu de echo et ça a marché.

print -n "Some string ...."

print - Retourner les arguments du shell

-4voto

edx Points 201

C'est dur.

Veuillez noter :

  • Tout ce qui est ci-dessous est juste un gribouillage.

  • NE JAMAIS utiliser ceci dans un code de production

En fait, echo -n devrait être la solution.

v7 comprend echo -n (testé sur v7x86)

Mais HP-UX 11.00 ne le fait pas (il utilise : echo 'foo'). \c ')

Tâche :

  • echo foo (sans nouvelle ligne)
  • echo bar
  • résultat attendu : foobar
  • donner une solution portable jusqu'à Unix v7 pour bourne sh

S'occuper de HP-UX (affecte probablement aussi les autres versions d'unix de SysV ...)

aka : ECHO_N=... $ECHO_N foo echo bar devrait donner : foobar

Quelqu'un a suggéré /usr/bin/printf, mais ce n'était pas dans la v7.


J'ai essayé plusieurs fois. C'est sh à la rescousse (voir ci-dessous)

awk fonctionne bien :

awk 'BEGIN{printf "foo"}'</dev/null;echo bar

tr fonctionne bien :

echo 'foo' | tr -d '\012';echo bar

Je suggère :

sh -c 'echo "$0"|tr -d \'\\012\\'' foo ; echo bar

Il faut encore plus de citations folles pour que cela devienne un ECHO_N=.

(BTW : pourquoi "$@" ne fonctionne pas ici ?)

Note : Pas encore testé sur la v7


Certains conduisent des voitures V8

Je conduis v7, 4.3, 2.6, 3.4, 10.9

Votre millage peut varier.

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