Для этого требуется 1-минутная задержка, но у меня надежно сработало и решило проблему зависания клиента SSH:
$ sudo shutdown +1; logout
При этом запланировано завершение работы системы на 1 минуту позже, что дает время для выход из системы и, следовательно, завершение работы по SSH. Если вы хотите подождать как можно меньше времени, вы можете заменить +1
на ЧЧ: ММ
для быстро приближающегося времени суток, но это может быть сложно правильно рассчитать время и может иметь задержку до 59 секунд.
Есть разница между одинарными и двойными кавычками, и это не вопрос стиля. Одиночные кавычки будут буквально повторять то, что вы пишете, поэтому вы можете быть уверены, что то, что вы пишете, будет именно тем, что будет напечатано. С другой стороны, двойные кавычки будут интерполировать значение переменных.
Из man bash
:
Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа внутри кавычек. Одиночные кавычки не могут находиться между одинарными кавычками, даже если им предшествует обратная косая черта.
Заключение символов в двойные кавычки сохраняет буквальное значение всех символов внутри кавычек, за исключением $, обратной кавычки, \ и, если включено раскрытие истории,!. Символы $ и обратная кавычка сохраняют свое особое значение в двойных кавычках. Обратная косая черта сохраняет свое особое значение только в том случае, если за ней следует один из следующих символов: $, `,", \ или новая строка. Двойные кавычки можно заключить в двойные кавычки, поставив перед ними обратную косую черту. Если этот параметр включен, расширение истории будет выполняется, если символ! в двойных кавычках не экранирован обратной косой чертой. Обратная косая черта перед! не удаляется.
Итак, в вашем примере:
#!/bin/bash
PLACE="World"
echo "Hello $PLACE !"
echo 'Hello $PLACE !'
приведет к следующему результату:
Hello World !
Hello $PLACE !
https://www.gnu.org/software/bash/manual/bashref.html# Цитирование
Внутри двойных кавычек переменные раскрываются.
Одиночные кавычки предотвращают интерполяцию строк:
Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа в кавычках. Одинарные кавычки не могут находиться между одинарными кавычками, даже если им предшествует обратная косая черта .
Также существует запись $ '…'
, которая позволяет использовать escape-последовательности ANSI C
.
Это зависит от языка. Вы упомянули bash, и другие ответы сосредоточены на этом, но то, как вы сформулировали свой вопрос, предполагает, что вы думаете, что здесь есть общее правило. Нет.
Например, если подумать о нескольких случайных языках, которые приходят на ум:
bash
(и других sh
-подобных оболочках), "... «
расширяет переменные в строке, а '...'
- нет. Бог знает, что делает csh. "..."
- это строка, 'x'
- это одиночный символ, а 'abc'
- это ошибка синтаксиса. «...»
- это строка, а '
«цитирует» все, что идет после нее. «...»
или «...»
или [. ..]
или | ... |
или что угодно, что, по мнению автора настраиваемой программы, было бы отличной идеей. (...)
. 5Hhello
(то есть это пример строк, не отмеченных ничем похожими на кавычки). Из них только Python - дело вкуса или стиля. Цитаты - это еще один синтаксис языка.