При реализации сценария я столкнулся со следующей проблемой: при помещении многострочного результата команды в переменную кажется, что последняя (пустая) строка моей многострочной строки исчезает.
Эта строка «пустая», но, тем не менее, я не могу потерять содержащийся в ней возврат каретки (потому что я объединяю блоки кода, сохраненные в БД и содержащие символ «\n», в удобочитаемую строку... Если я потеряю некоторые из "\n", я потеряю часть отступа моего кода)
Вот код, иллюстрирующий мою проблему:
test="A
B
";
test2=`echo "$test"`;
echo "||$test2||";
Это возвращает
||A
B||
пока я ждал:
||A
B
||
--> последняя (пустая) строка исчезла... и, таким образом, в моем удобочитаемом коде отсутствует возврат каретки.
Эта проблема возникает только тогда, когда последняя строка моей многострочной строки пуста...
Ты знаешь
- Почему эта последняя строка исчезает?
- Как я могу гарантировать, что моя последняя пустая строка будет сохранена в моей многострочной строковой переменной?
Обратите внимание, что я, конечно, не могу использовать самое простое решение
test2="$test";
потому что полный процесс скорее:
test="^A\n\nB\n^"
test2="`echo "$test" | sed -e 's/\^//g'`";
но я постарался максимально упростить вопрос.
foo=$(echo foo)
не содержало бы строкиfoo
, но имело бы завершающую новую строку, что могло бы сбить людей с толку. - person Charles Duffy   schedule 07.09.2017rpm -q
для проверки сведений об установленных пакетах), но я не помню, какие именно. - person Charles Duffy   schedule 08.09.2017