Существует ли простое правило, чтобы понять, когда использовать кавычки в командной строке Ubuntu и когда одинарные кавычки и когда нужны двойные кавычки?
Например, как объяснить разницу здесь:
$ echo $'a\naa\nac\nb\ncc\tdd\ne\se'
a
aa
ac
b
cc dd
e\se
$
и
$ echo $"a\naa\nac\nb\ncc\tdd\ne\se"
a\naa\nac\nb\ncc\tdd\ne\se
$
Обычно двойные кавычки ("") используются для печати значения любой переменной, а одинарные кавычки используются для печати точной строки.
Например, у вас есть переменная foo, которая содержит pwd как значение.
foo=pwd
теперь, когда вы это сделаете: -
echo «$ foo» - он выведет значение переменной foo ie pwd echo '$ foo '- он будет печатать $ foo (точная строка, передаваемая в одинарных кавычках. Кроме того, обратные кавычки используются в сценариях командной строки / оболочки, которые обычно используются для запуска команды, хранящейся в переменной. echo `$foo ` будет печатать ваш текущий каталог, т. е. вывод команды pwd.$ echo $'a\naa\nac\nb\ncc\tdd\ne\se'
a
aa
ac
b
cc dd
e\se
$
В приведенном выше примере \n представляет новую строку. Для этого синтаксиса $'code\ncode1' терминал сначала печатает code в первой строке и на следующей строке, он печатает code1. [!d0 ]
Итак, в этом примере терминал сначала начинает выполнять код.prints a в 1-й строке, затем переходит к следующему символу. Следующий символ - \n, который представляет новую строку. aa в новой строке. И интерпретатор bash выполняется так. При просмотре этого кода cc\tdd он печатает cc, и после некоторого пробела он печатает dd. Потому что \t представляет tab. он печатает e\se asusual, потому что для \s нет значения.
$ echo $"a\naa\nac\nb\ncc\tdd\ne\se" a\naa\nac\nb\ncc\tdd\ne\se $echo $"text". В этом команда эха отображает все, что указано внутри $"", как оно. Оно не будет parse.
echo $'code' - анализирует код.
echo $"code". Если код содержит переменную доллара, ее следует расширить, иначе она не будет для \ n \ t и печатает все остальное содержимое как есть.
Проверить принятый ответ в разделе Различия между двойными кавычками " & quot ;, singlequotes '' и backticks '' в командной строке?
Например, укажите, что переменная foo содержит uname.
echo "$foo" outputs uname, subtitute variables in text.
echo '$foo' outputs $foo, the exact string (only ' should be escaped \').
echo `$foo` outputs Linux, execute the content of the variable and echo outputs it.
Вот также некоторые приятные Различия между двойными метками " ", одиночные кавычки" и обратные метки "в командной строке?