Сегодня я читаю учебник по оболочке от http://www.tutorialspoint.com/unix/unix-quoting-mechanisms.htm
В котором упоминается:
Если в строке для вывода отображается одинарная кавычка, вы не должны помещать всю строку в одинарные кавычки, вместо этого вы должны были использовать обратную косую черту () следующим образом:
echo 'It\'s Shell Programming'
Я пробовал это на моем сервере Centos, он не работает, >
подсказка подсказывает мне больше типа.
Мне было интересно, так как две одинарные кавычки превращают все специальные символы в обычные символы, которые включают управляющий символ \
, но исключают себя '
,
как мне представить одну одинарную кавычку '
в фразе, заключенной в одинарные кавычки?
echo It\'s Shell Programming
илиecho "It's Shell Programming"
?echo Wow, I'm going to have lots of $$$$$$ now
$
тоже. Что-то вродеecho Wow, I\'m going to have lots of \$\$\$\$\$\$ now
или простоecho Wow, I\'m going to have lots of '$$$$$$' now
echo 'It'"'"'s Shell Programming'
, Я просто делю его на 3 строки, первая и последняя окружены одинарными кавычками, а средняя имеет одинарную кавычку в двойных кавычках.Ответы:
Учебник не так.
POSIX говорит:
Вот несколько альтернатив:
Дальнейшее чтение: Цитаты - Грег Вики
источник
echo 'It''s Shell Programming'
- zsh сrc_quotes
установленным параметром (и оболочкой rc) - пара одинарных кавычек внутри одинарных кавычек представляет одну одинарную кавычку.q="'"
иqq='"'
чтобы сделать это чище. Это позволяетecho "It${q}s ${qq}Shell Programming${qq}"
(фигурные скобки необходимы с учетом конечных букв). POSIX-безопасности. Внешний слой должен быть в двойных кавычках.Вы можете использовать:
Для безопасной оболочки заключить в кавычки строку значения на строку.
В зависимости от оболочки, вы также можете сделать:
Хотя я обычно предпочитаю делать:
Более ручной подход может выглядеть так:
... который, по крайней мере, без вилки.
источник
printf %q\\n "$arbitrary_value"
другие слишком сложны».В случае, если кто-то другой добавит в файл сочетание одинарных и двойных кавычек, это тоже работает:
Все, что оболочка может видеть как переменную, должно быть экранировано обратной косой чертой:
источник