Je vide une chaîne avec hexdump
comme ça 2031 3334 2e30 0a32 2032 3331 302e 000a
. Il est clair que 0x0a
c'est un nouveau caractère de ligne, cependant, quand j'essaie de faire écho à cette chaîne, je l'ai toujours 1 430.2 2 13.0
- la nouvelle ligne est remplacée par un espace, même si j'utilise le -e
drapeau.
Quel peut être le problème? Le tail \0
ruine-t-il la sortie? Existe-t-il des alternatives pour imprimer 0x0a
une nouvelle ligne?
Merci et meilleures salutations.
echo -e
. Merci, je trouve une solution.printf "...\n"
au lieu deecho
.Réponses:
Le nouveau caractère de ligne avec la
echo
commande est "\ n". Prenons l'exemple suivant:Entraînerait la sortie
Le paramètre "-e" est important ici.
la source
"echo -e ..."
repose sur l'écho de bash pour fonctionner correctement (par exemple,dash
affichera simplement le "-e"); mais '/ bin / echo' peut (ou non) fonctionner aussi. Malheureusement (peut-être de manière appropriée), il y a beaucoup d'écho autour, et vous ne voulez pas vraiment vous soucier de celui que vous allez obtenir. L'utilisation'printf "....\n"
est une option plus portable à travers les env et les shells.POSIX 7 dit que vous ne pouvez pas
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
n'est pas défini et les barres obliques inverses sont définies par l'implémentation:sauf si vous disposez d'une extension XSI en option.
Utilisez donc à la
printf
place:la notation du format de fichier :
Gardez également à l'esprit que Ubuntu 15.10 et la plupart des distributions implémentent les
echo
deux comme:help echo
which echo
ce qui peut entraîner une certaine confusion.
la source
J'ai finalement correctement formaté cette chaîne avec
printf "$string"
. Merci à tous.la source
$string
parlez-vous? Comment est-ce lié à la question? Qu'est-ce que cela n'implique pas\n
comme dans les deux autres réponses?