2 votes

Pourquoi les lignes vides (^$) ne sont-elles pas présentes dans cette variable ?

$ cat temp.txt
hello, world!

$ cat temp.txt | sed -n '1,4p'
hello, world!

$ ret=$(cat temp.txt | sed -n '1,4p')
$ echo "$ret"
hello, world!
$

Je me demande pourquoi la variable $ret n'a pas les lignes vides.

Merci beaucoup pour votre aide.

4voto

chepner Points 54078

Extrait de la page de manuel de bash (c'est moi qui souligne) :

Bash effectue l'expansion en exécutant la commande et en remplaçant la substitution de la commande par > la sortie standard de la commande, avec les éventuels retours à la ligne supprimé . Les retours à la ligne intégrés ne sont pas supprimés, mais ils peuvent être supprimés pendant le traitement du mot. mots. La substitution de la commande $(cat file) peut être remplacée par la commande équivalente mais plus rapide $(<fichier).

-1voto

twalberg Points 19804

L'analyse syntaxique des echo "$ret" ne tient pas compte des espaces pour déterminer quels sont les arguments réels de l'option echo sera. Jouez avec ce genre de choses pour mieux comprendre :

x=$(echo '   foo    ')
echo "x${x}x"
echo ${x}
echo "${x}"

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