В чем разница между "и" - и когда это использовать? [Дубликат]

Для этого требуется 1-минутная задержка, но у меня надежно сработало и решило проблему зависания клиента SSH:

    $ sudo shutdown +1; logout

При этом запланировано завершение работы системы на 1 минуту позже, что дает время для выход из системы и, следовательно, завершение работы по SSH. Если вы хотите подождать как можно меньше времени, вы можете заменить +1 на ЧЧ: ММ для быстро приближающегося времени суток, но это может быть сложно правильно рассчитать время и может иметь задержку до 59 секунд.

9
11.02.2017, 01:12
3 ответа

Есть разница между одинарными и двойными кавычками, и это не вопрос стиля. Одиночные кавычки будут буквально повторять то, что вы пишете, поэтому вы можете быть уверены, что то, что вы пишете, будет именно тем, что будет напечатано. С другой стороны, двойные кавычки будут интерполировать значение переменных.

Из man bash :

Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа внутри кавычек. Одиночные кавычки не могут находиться между одинарными кавычками, даже если им предшествует обратная косая черта.

Заключение символов в двойные кавычки сохраняет буквальное значение всех символов внутри кавычек, за исключением $, обратной кавычки, \ и, если включено раскрытие истории,!. Символы $ и обратная кавычка сохраняют свое особое значение в двойных кавычках. Обратная косая черта сохраняет свое особое значение только в том случае, если за ней следует один из следующих символов: $, `,", \ или новая строка. Двойные кавычки можно заключить в двойные кавычки, поставив перед ними обратную косую черту. Если этот параметр включен, расширение истории будет выполняется, если символ! в двойных кавычках не экранирован обратной косой чертой. Обратная косая черта перед! не удаляется.

Итак, в вашем примере:

#!/bin/bash
PLACE="World"
echo "Hello $PLACE !"
echo 'Hello $PLACE !'

приведет к следующему результату:

Hello World !
Hello $PLACE !
15
27.01.2020, 20:05

https://www.gnu.org/software/bash/manual/bashref.html# Цитирование

Внутри двойных кавычек переменные раскрываются.

Одиночные кавычки предотвращают интерполяцию строк:

Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа в кавычках. Одинарные кавычки не могут находиться между одинарными кавычками, даже если им предшествует обратная косая черта .

Также существует запись $ '…' , которая позволяет использовать escape-последовательности ANSI C .

5
27.01.2020, 20:05

Это зависит от языка. Вы упомянули bash, и другие ответы сосредоточены на этом, но то, как вы сформулировали свой вопрос, предполагает, что вы думаете, что здесь есть общее правило. Нет.

Например, если подумать о нескольких случайных языках, которые приходят на ум:

  • В bash (и других sh -подобных оболочках), "... « расширяет переменные в строке, а '...' - нет. Бог знает, что делает csh.
  • В Python они эквивалентны, и вы можете выбирать между ними в значительной степени на основе вкуса или удобства.
  • В языках типа C "..." - это строка, 'x' - это одиночный символ, а 'abc' - это ошибка синтаксиса.
  • В шепелявке «...» - это строка, а ' «цитирует» все, что идет после нее.
  • В файле конфигурации «правильные» кавычки могут быть «...» или «...» или «...» или [. ..] или | ... | или что угодно, что, по мнению автора настраиваемой программы, было бы отличной идеей.
  • В Postscript строки помечаются (...) .
  • В (слегка устаревшем) Фортране пятизначная строка «привет» может быть записана как 5Hhello (то есть это пример строк, не отмеченных ничем похожими на кавычки).
  • В английском языке они гнездятся «Я сказал ему« привет »» или «Я сказал ему« привет »» в зависимости от того, на какой стороне Атлантики живет ваш редактор.
  • Я уверен, что со временем можно придумать еще несколько загадочных примеров.

Из них только Python - дело вкуса или стиля. Цитаты - это еще один синтаксис языка.

0
27.01.2020, 20:05

Теги

Похожие вопросы