Intereting Posts

Как сохранить символ возврата каретки (\ n) при выходе вывода команды в переменную

В качестве простого примера у меня есть куча файлов исходного кода. Я хочу сохранить вывод команды «head» в переменную для всех этих файлов.

Я пытался:

output=$(head $file) 

но произошло то, что это автоматически обрезало все символы \n при сохранении вывода в переменной.

Как сохранить выходной файл команды без удаления \n символов?

Это известный недостаток «расширения команд» $(...) или `...` что последняя строка новой строки обрезана.

Если это ваш случай:

 $ output="$(head -- "$file"; echo x)" ### capture the text with an x added. $ output="${output%?}" ### remove the last character (the x). 

Будет исправлено значение вывода.

output=$(head $file) не обрезает новые строки из значения. Это то, как вы ссылаетесь на переменную, которая делает разницу.

Вы должны ссылаться на переменную с двойными кавычками.

 echo "$output" 

сохраняет новые строки.