Как избежать одиночной кавычки в строке одинарной кавычки в Bash? - PullRequest
56 голосов
/ 24 ноября 2011

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

I'm a student

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

echo "I'm a student"

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

Ответы [ 3 ]

98 голосов
/ 24 ноября 2011
echo 'I\'m a student'

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

echo $'I\'m a student'

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

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

45 голосов
/ 02 октября 2014

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

'I'"'"'m a student'

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

Beautiful!

7 голосов
/ 20 января 2018

Пример ниже работает, потому что экранированная одинарная кавычка \' технически находится между двумя одинарными кавычками

echo 'I'\''m a student'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...