Исходная маршрутизация Linux, модель сильной конечной системы / модель сильного хоста?

В 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'
9
31.01.2016, 08:03
0 ответов

Теги

Похожие вопросы