Le code suivant décrit le mieux la situation. Pourquoi la dernière ligne ne génère-t-elle pas le caractère de retour à la ligne de fin? La sortie de chaque ligne est indiquée dans le commentaire. J'utilise GNU bash, version 4.1.5
echo -n $'a\nb\n' | xxd -p # 610a620a
x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a
echo -ne "a\nb\n" | xxd -p # 610a620a
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # 610a62
tmp=$(somecommand; echo a)
... Cela a certainement ramené le point à la maison ... Jusqu'à ce que je voie l'exemple, ma tendance aurait toujours été d'utiliser echo -n a
... mais, bien sûr !, il n'est pas nécessaire de le -n
, car la substitution de commande supprimera dans tous les cas la nouvelle ligne de fin introduite! ... merci ...
tmp=$(somecommand; echo a); tmp=${tmp%a}