Когда использовать одиночные или двойные кавычки в командной строке Ubuntu? [Дубликат]

Этот вопрос уже имеет ответ здесь: Различия между doublequotes “ & rdquo ;, singlequotes '' и backticks '' на командной строке? 6 ответов

Существует ли простое правило, чтобы понять, когда использовать кавычки в командной строке 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
$
1
задан 11 March 2014 в 11:51

3 ответа

Обычно двойные кавычки ("") используются для печати значения любой переменной, а одинарные кавычки используются для печати точной строки.

Например, у вас есть переменная foo, которая содержит pwd как значение.

foo=pwd

теперь, когда вы это сделаете: -

echo «$ foo» - он выведет значение переменной foo ie pwd echo '$ foo '- он будет печатать $ foo (точная строка, передаваемая в одинарных кавычках. Кроме того, обратные кавычки используются в сценариях командной строки / оболочки, которые обычно используются для запуска команды, хранящейся в переменной. echo `$foo ` будет печатать ваш текущий каталог, т. е. вывод команды pwd.
2
ответ дан 24 May 2018 в 10:55
  • 1
    Обратите внимание, что одиночные кавычки работают как двойные кавычки, когда внутри двойных кавычек: echo "'$foo'". Это полезно, когда требуется многократное цитирование, – Adobe 11 March 2014 в 12:17
$ 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 и печатает все остальное содержимое как есть.

1
ответ дан 24 May 2018 в 10:55
  • 1
    «Он не будет анализировать код». не является правильным. Переменные в code будут расширены. Тест echo $"$PWD". – Dubu 11 March 2014 в 16:38
  • 2
    @Dubu, я не говорю о "$PWD", его $"PWD" .Проверьте echo $"PWD" – Avinash Raj 11 March 2014 в 16:41
  • 3
    Я мог бы также использовать $"Hello, I am in $PWD". Вы сказали, что «он не будет анализировать код», и я хотел показать, что это неверно. Если вы поместите что-то в code, который содержит долларовые переменные, они будут расширены. $"..." в основном похож на "...", за исключением того, что escape-обраты не будут разбираться (с некоторыми исключениями, такими как \$, \" и т. д.). Но переменные будут расширены. – Dubu 11 March 2014 в 16:47

Проверить принятый ответ в разделе Различия между двойными кавычками " & 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.

Вот также некоторые приятные Различия между двойными метками " ", одиночные кавычки" и обратные метки "в командной строке?

1
ответ дан 24 May 2018 в 10:55

Другие вопросы по тегам:

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