В Bash встроен printf
с поддержкой %b
для расширения обратных слешей и %q
для форматирования строки, чтобы ее можно было использовать в командах оболочки без кавычек (т.е. экранировать все символы, которые оболочки обычно специально обрабатывают обратными слешами).
Другими словами, в Bash вы можете использовать
printf '%b\n' 'line1\n\nline2\nline3'
для получения
line1
line2
line3
Если вам не нужна новая строка после строки3
, используйте printf '%b' 'line1\n\nline2\nline3'
вместо этого.
Обратное (%q
) аналогично полезно,
printf '%q' '(foo $bar baz]'
выводя
\(foo\ \$bar\ baz\]
Если у вас есть переменная Bash, содержащая строку с обратными слешами, например,
myvar='line1\n\nline2\nline3'
вы можете расширить управляющие последовательности с помощью
mytext=$(printf '%b' "$myvar")
Если вы просто хотите указать литеральную строку с управляющими последовательностями, используйте $'''
:
mytext=$'line1\n\nline2\nline3'