Question Echo newline dans Bash imprime littéralement \ n


Dans Bash, essayé ceci:

echo -e "hello\nworld"

Mais il n'imprime pas de nouvelle ligne, seulement \n. Comment puis-je faire imprimer la nouvelle ligne?

J'utilise Ubuntu 11.04.


1567
2017-12-11 21:01


origine


Réponses:


Vous pourriez utiliser printf au lieu:

printf "hello\nworld\n"

printf a un comportement plus cohérent que echo. Le comportement de echo varie considérablement entre les différentes versions.


1934
2017-12-11 21:04



Es-tu sûr que tu es à bash? Fonctionne pour moi, les trois façons:

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

1296
2017-12-11 21:04



echo $'hello\nworld'

imprime

hello
world

$'' cordes utilisent Citation ANSI C:

Mots du formulaire $'chaîne' sont traités spécialement. Le mot s'étend à chaîne, avec des caractères d'échappement à barre oblique inverse remplacés comme spécifié par la norme ANSI C.


422
2017-11-02 09:39



Tu pourrais toujours faire echo "".

par exemple.

echo "Hello"
echo ""
echo "World"

90
2018-02-28 22:14



Dans l'éventualité où quelqu'un se trouve en train de se frapper la tête contre le mur en essayant de comprendre pourquoi le script d'un collègue n'imprime pas les sauts de ligne, faites attention à cela ->

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

echo $(GET_RECORDS);

Comme dans ce qui précède, l'exécution réelle de la méthode peut elle-même être enveloppée dans un écho qui remplace tous les échos qui peuvent être dans la méthode elle-même. Évidemment j'ai arrosé ceci pour la brièveté, ce n'était pas si facile à repérer!

Vous pouvez ensuite informer vos camarades qu'une meilleure façon d'exécuter les fonctions serait comme suit:

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

GET_RECORDS;

32
2017-08-08 20:15



Essayer

echo -e "hello\nworld"
hello
world

travaillé pour moi dans nano éditeur.


20
2017-12-05 11:06



Cela fonctionne pour moi en raspbian,

echo -e "hello\\nworld"


17
2018-04-19 19:05



str='hello\nworld'
$ echo | sed "i$str"
hello
world

14
2017-11-23 11:10



POSIX 7 sur l'écho

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

-e n'est pas défini et les antislashs sont définis par l'implémentation:

Si le premier opérande est -n, ou si l'un des opérandes contient un caractère <backslash>, les résultats sont définis par l'implémentation.

sauf si vous avez une extension XSI optionnelle.

Alors utilisez printf au lieu:

format opérande doit être utilisé comme la chaîne de format décrite dans la notation de format de fichier XBD [...]

la Notation de format de fichier:

\ n <newline> Déplace la position d'impression au début de la ligne suivante.

Gardez également à l'esprit que Ubuntu 15.10 et la plupart des distributions echo à la fois comme:

  • un Bash intégré: help echo
  • un exécutable autonome: which echo

ce qui peut conduire à une certaine confusion.


14
2018-01-22 13:23