Я часто вижу учебные материалы в Интернете или сообщения на этом сайте, в которых интенсивно используются следующие символы в командной строке. Часто кажется, что они используются для довольно похожих целей. Каковы различия между ними при использовании в командной строке или для программирования оболочки? Для каких целей я использую какие из них?
" " double quotes
' ' single quotes
` ` backticks
command-line
bash
NES
источник
источник
\
всегда трактуется буквально, когда заключено в одинарные кавычки, даже если оно предшествует'
. После открытия'
следующее'
всегда интерпретируется как заключительная цитата. Нечто подобное'
заключению в кавычки в строке, заключенной в одинарные кавычки, может быть достигнуто путем завершения кавычек, экранирования по'
отдельности и повторного цитирования. То есть, хотя\'
не работает между открывающими и закрывающими'
символами,'\''
работает. (См Жиля «сек поправки к одному из моих постов , когда я сделал ту же ошибку для деталей.)Это очень хорошо объясняется в соответствующем разделе руководства по bash. Вкратце, все в одинарных кавычках интерпретируется буквально. Так, например:
Сравните это с версиями без кавычек:
Двойные кавычки позволяют расширение переменной (также расширение истории и некоторые другие вещи). По сути, вы используете их, когда имеете дело с чем-то, что вы хотите видеть расширенным. Например:
Другими словами, одинарные кавычки полностью защищают строку от оболочки, тогда как двойные кавычки защищают некоторые вещи (например, пробелы), но позволяют переменным и специальным символам правильно расширяться / интерпретироваться.
источник
Одинарные кавычки (
''
) используются для сохранения буквального значения каждого символа, заключенного в кавычки.Используя двойные кавычки (
""
), сохраняется буквальное значение всех символов, кроме знака доллара ($
), обратных кавычек (обратные одинарные кавычки``
) и обратного слеша (\
).Когда
``
оболочка заключена в back-ticks ( ), оболочка что-то интерпретирует как «вывод команды внутри back-ticks». Это называется «подстановка команды», поскольку вывод команды заменяется самой командой.Ссылки:
источник
Одинарные кавычки предотвращают расширение переменной, а двойные кавычки позволяют это.
источник
Просто говорю в общем но:
""
- Используется для обработки некоторой информации внутри них перед выводом. (Как в PHP.)name=NESS; echo "Hello my name is $name"
будет выводить:Hello my name is NESS
''
- Используется, чтобы показать вывод как есть. (Также как в PHP.)Hello my name is $name
Таким образом, разница между двойными и одинарными кавычками заключается в том, что двойные кавычки обрабатывают переменную и показывают значение, тогда как одинарные кавычки показывают имя переменной без обработки.
``
- Используется для цитирования команд, которые позже назначаются другой переменной.источник
Одинарные кавычки заключают в себе значение, которое следует понимать буквально: все типы раскрытия исключаются. Обычно используется , если значение включает или может включать пробелы (пробел, табуляция, новая строка), или специальные символы (
$
,\
,`
) , что пользователь не хочет быть расширен / обрабатывают специально оболочкой.Двойные кавычки заключают в себе значение, которое будет иметь переменные и замену символов. Требуется, когда выходные данные могут содержать пробелы, и должны быть назначены как одно значение.
Обратные кавычки заключают в себе команду, результаты которой требуются в качестве значения. Новые оболочки позволяют использовать
$(...)
вместо`...`
. Я предпочитаю более новый метод.Следующий код может помочь понять, что происходит.
источник