Il codice seguente descrive al meglio la situazione. Perché l'ultima riga non sta emettendo il carattere finale newline finale? L'output di ogni riga è mostrato nel commento. Sto usando GNU bash, versione 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)
... Questo ha sicuramente portato il punto a casa ... Fino a quando non ho visto l'esempio, la mia tendenza sarebbe stata ancora quella di usare echo -n a
... ma, ovviamente !, non c'è bisogno di il -n
, perché Command Substitution rimuoverà in ogni caso la newline finale introdotta! ... grazie ...
tmp=$(somecommand; echo a); tmp=${tmp%a}