Следующий код лучше всего описывает ситуацию. Почему последняя строка не выводит завершающий символ новой строки? Вывод каждой строки показан в комментарии. Я использую GNU Bash, версия 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)
... Это, безусловно, послужило основанием ... Пока я не увидел пример, моя склонность все еще была бы в использовании echo -n a
... но, конечно же, нет необходимости -n
, потому что команда Замена удалит введенный трейлинг символ новой строки в любом случае! ... спасибо ...
tmp=$(somecommand; echo a); tmp=${tmp%a}