446 votes

Comment puis-je avoir un saut de ligne dans une chaîne en sh ?

Ceci

produit en sortie

Au lieu de

Que dois-je faire pour avoir un saut de ligne dans une chaîne ? Je connais , mais je ne suis pas composer la chaîne de , la chaîne servira comme argument par une autre commande qui ne sait pas comment interpréter `` comme un saut de ligne.

468voto

amphetamachine Points 7384

Solution :

J’ai pensé à elle. La solution consiste à utiliser `` , par exemple :

Voici un extrait de la page de manuel de Bash :

201voto

Jens Points 17702

Echo est donc des années nonante et si pleine de périls que son utilisation devrait entraîner core dumps pas moins de 4 GO. Sérieusement, echo des problèmes ont été la raison pour laquelle les Unix processus de Normalisation enfin inventé l' printf utilitaire, de faire disparaître tous les problèmes.

Donc, pour obtenir un retour à la ligne dans une chaîne de caractères:

FOO="hello
world"
BAR=$(printf "hello\nworld\n") # Alternative; note: final newline is deleted
printf '%s\n' "$FOO"
printf '%s\n' "$BAR"

Il y! Pas de SYSV vs BSD echo de la folie, tout est parfaitement imprimé et entièrement portable, soutien pour les séquences d'échappement. Tout le monde veuillez utiliser printf maintenant et ne jamais regarder en arrière.

72voto

zvezda Points 154

Ce que j’ai après les autres réponses étaient

35voto

Pace Points 10393

Le problème n’est pas avec l’interpréteur de commandes. Le problème est en fait avec la commande echo elle-même. Vous pouvez essayer d’utiliser `` , mais qui n’est pas pris en charge sur toutes les plateformes. Vous pouvez également essayer et insérez le saut de ligne directement dans votre script shell (si un script est ce que vous écrivez) il ressemble à...

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