Dans Bash, j'ai essayé ça :
echo -e "Hello,\nWorld!"
Mais il n'imprime pas une nouvelle ligne, seulement \n
. Comment puis-je faire en sorte qu'il imprime la nouvelle ligne ?
J'utilise Ubuntu 11.04 (Natty Narwhal).
Dans Bash, j'ai essayé ça :
echo -e "Hello,\nWorld!"
Mais il n'imprime pas une nouvelle ligne, seulement \n
. Comment puis-je faire en sorte qu'il imprime la nouvelle ligne ?
J'utilise Ubuntu 11.04 (Natty Narwhal).
Ou même printf %"s\n" hello world
-- printf réutilisera le format si trop d'arguments sont donnés
L'OP a demandé echo, pas printf ; et la réponse de @choroba ci-dessous, qui utilise l'option -e, remplit parfaitement ce rôle.
echo $'hello\nworld'
imprime
hello
world
$''
utilisation des cordes Cotation ANSI C :
Mots de la forme
$'_string_'
sont traités de manière particulière. Le mot s'étend à chaîne de caractères avec remplacement des caractères antislash comme spécifié par la norme ANSI C.
@EvgeniSergeev Pas sûr de ce que vous voulez dire, mais ça n'a pas marché pour moi non plus au début. Et c'est parce que j'utilisais des guillemets doubles et il s'avère que cela ne fonctionne qu'avec des guillemets simples ! J'ai essayé dans Terminal sur Mac.
Vous pouvez toujours concaténer des chaînes de caractères entre guillemets. ` foo="bar" ; echo $''$foo'efoot'``
echo ""
fonctionne pour moi et je pense que c'est la forme la plus simple pour imprimer une nouvelle ligne, même si cela ne répond pas directement à la question. Merci.
Je pense que c'est moins évident (et donc potentiellement plus déroutant) que echo -en "\n"
.
Au cas où quelqu'un se retrouverait à se frapper la tête contre le mur en essayant de comprendre pourquoi le script d'un collègue n'imprime pas les nouvelles lignes, faites attention à ceci :
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
echo $(GET_RECORDS);
Comme dans l'exemple ci-dessus, l'exécution de la méthode peut elle-même être enveloppée dans un écho qui remplace tous les échos qui peuvent se trouver dans la méthode elle-même. Évidemment, j'ai édulcoré ce texte pour être plus bref. Ce n'était pas si facile à repérer !
Vous pouvez alors informer vos camarades qu'une meilleure façon d'exécuter les fonctions serait comme ceci :
#!/bin/bash
function GET_RECORDS()
{
echo -e "starting\n the process";
}
GET_RECORDS;
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.
340 votes
Pour ceux qui disent "ça marche pour moi", le comportement d'echo varie beaucoup entre les versions. Certaines imprimeront même le "-e" comme faisant partie de leur sortie. Si vous voulez un comportement prévisible pour tout ce qui n'est pas trivial, utilisez printf à la place (comme dans la réponse de @sth).
10 votes
Je n'ai pas pu obtenir tout des suggestions de cette réponse, parce qu'il s'avère que j'ai essayé de l'utiliser dans une fonction qui ne fonctionne pas. renvoie une valeur et tous les messages echo (et printf) de la fonction ont été ajoutés à la valeur de retour. après avoir été dépouillés individuellement des nouvelles lignes . Voici une question à ce sujet, avec une réponse extrêmement complète : stackoverflow.com/questions/27872069/ C'était comme une visite mystère de trois heures.
9 votes
A noter également : dans Unix & Linux Stack Exchange, la rubrique réponse acceptée à Comment ajouter de nouvelles lignes en utilisant echo
3 votes
Echo -ne "bonjour \nworld " (vous aviez besoin du drapeau n pour interpréter les échappements) - mais comme d'autres l'ont dit, différentes commandes d'écho peuvent avoir des résultats différents !
4 votes
@Konchog
echo -n
Entrée de la page de manuel sur archlinux ` -n do not output the trailing newline` Cela n'a rien à voir avec l'interprétation des échappements.0 votes
@altu, c'est correct. L'objectif du drapeau -n est d'utiliser \n dans la chaîne de mise en forme. Bien entendu, vous pouvez décider de conserver le caractère de fin de chaîne \n mais comme vous les mettez en forme, il n'est pas rare que vous les supprimiez.
0 votes
Cela fonctionne bien en Bash correspondant à Ubuntu MATE 20.04 (Fosse focale) - Bash version 5.0.17 (
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
)0 votes
Depuis
echo
ajoute une nouvelle ligne par défaut, vous pouvez toujours exécuterecho "Hello," && echo "World!"