Как избежать одиночной цитаты в одиночной строке кавычки в Bash?
Я хочу показать строку в Bash, как этот
I'm a student
Конечно, вы можете сделать это так:
echo "I'm a student"
Но как это сделать, используя одиночную цитату вокруг строки?
Ответ 1
echo 'I\'m a student'
не работает. Но следующие работы:
echo $'I\'m a student'
На странице руководства bash:
Отдельная кавычка может отсутствовать между одинарными кавычками, даже если она предшествует обратной косой чертой. .... Слова формы $'строка' рассматриваются специально. Слово расширяется до строки, при этом символы с экранированной обратной косой чертой заменяются как указанный стандартом ANSI C.
Ответ 2
"Уродливое" решение, упомянутое Гленном Джекманом, должно фактически быть перечислено как ответ верхнего уровня. Он работает хорошо и на самом деле красив в некоторых ситуациях.
'I'"'"'m a student'
Это завершает одинарную кавычку после I, а затем сразу же запускает строку с двойными кавычками, содержащую одну цитату, а затем запускает еще одну строку с кавычками. Bash затем объединяет все непрерывные строки в один.