эхо тот аргументы Escape оболочки [дубликат]

17
задан panzi 28 April 2010 в 17:46
поделиться

1 ответ

В bash встроенная функция printf имеет дополнительный спецификатор формата % q , который печатает соответствующий аргумент удобным способом:

В дополнение к стандартному printf (1 ) форматы, % b заставляет printf расширять escape-последовательности обратной косой черты в соответствующем аргументе (за исключением того, что \ c завершает вывод, обратная косая черта в \ ', \ " и \? не удаляются, а восьмеричные escape-последовательности, начинающиеся с \ 0 , могут содержать до четырех цифр), а % q вызывает printf для вывода соответствующего аргумента в формате, который можно повторно использовать в качестве входных данных оболочки.

Таким образом, вы можете сделать что-то вроде этого:

printf %q "$VARIABLE"
printf %q "$(my_command)"

, чтобы получить содержимое переменной или выходные данные команды в формате, который можно безопасно передавать снова в качестве ввода (т. е. экранированные пробелы). Например:

$ printf "%q\n" "foo bar"
foo\ bar

(я добавил новую строку, чтобы она была удобна в интерактивной оболочке.)

25
ответ дан 30 November 2019 в 13:12
поделиться
Другие вопросы по тегам:

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