Подтвердить что ты не робот

Как избежать одиночной цитаты в одиночной строке кавычки в Bash?

Я хочу показать строку в Bash, как этот

I'm a student

Конечно, вы можете сделать это так:

echo "I'm a student"

Но как это сделать, используя одиночную цитату вокруг строки?

4b9b3361

Ответ 1

echo 'I\'m a student'

не работает. Но следующие работы:

echo $'I\'m a student'

На странице руководства bash:

Отдельная кавычка может отсутствовать между одинарными кавычками, даже если она предшествует обратной косой чертой.
....
Слова формы $'строка' рассматриваются специально. Слово расширяется до строки, при этом символы с экранированной обратной косой чертой заменяются как указанный стандартом ANSI C.

Ответ 2

"Уродливое" решение, упомянутое Гленном Джекманом, должно фактически быть перечислено как ответ верхнего уровня. Он работает хорошо и на самом деле красив в некоторых ситуациях.

'I'"'"'m a student'

Это завершает одинарную кавычку после I, а затем сразу же запускает строку с двойными кавычками, содержащую одну цитату, а затем запускает еще одну строку с кавычками. Bash затем объединяет все непрерывные строки в один.

Красивая!