2846 votes

L'écho de la nouvelle ligne bash imprime littérale \n

En Bash, essayé ceci:

echo -e "hello\nworld"

Mais il n'a pas l'impression d'un retour à la ligne, seulement \n. Comment puis-je faire imprimer le retour à la ligne?

Je suis sur Ubuntu 11.04.

3438voto

sth Points 91594

Vous pouvez utiliser printf à la place:

printf "hello\nworld\n"

1976voto

choroba Points 56333

Êtes-vous sûr d'en bash? Fonctionne pour moi, tous les trois façons:

echo -e "Hello\nworld"
echo -e 'Hello\nworld'
echo Hello$'\n'world

645voto

Vanuan Points 4751
$ echo $'hello\nworld'

imprime

hello
world

Pour plus d'explications, lire cette question: http://unix.stackexchange.com/questions/48106/what-does-it-mean-to-have-a-dollarsign-prefixed-string-in-a-script

163voto

zindigo Points 117

Vous pouvez toujours faire écho ""

par exemple

echo "Hello"
echo ""
echo "World"

47voto

Uncle Iroh Points 824

En dehors de la chance que quelqu'un trouve se frappant la tête contre le mur en essayant de comprendre pourquoi un collègue de script ne sont pas imprimer les retours à la ligne, regarder dehors pour cela ->

#!/bin/bash
function GET_RECORDS()
{
   echo -e "starting\n the process";
}

echo $(GET_RECORDS);

Comme mentionné ci-dessus, le fonctionnement réel de la méthode peut être lui-même emballé dans un écho qui remplace tout les échos que peut-être dans la méthode elle-même. Évidemment, je l'ai arrosé cela pour des raisons de concision, il n'était pas si facile à repérer!

Ensuite, vous pouvez informer vos camarades que d'une meilleure façon d'exécuter des fonctions serait de la sorte:

#!/bin/bash
function GET_RECORDS()
{
   echo -e "starting\n the process";
}

GET_RECORDS;

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