В разделе 3.1.2.3 под названием Двойные кавычки руководство Bash гласит:
Заключение символов в двойные кавычки ('"') сохраняет буквальное значение всех символов в кавычках, за исключением '$', '`', '\' и, когда расширение истории включено, '!'.
На данный момент меня интересует одиночная кавычка ( '
).
Это особое значение, описанное в предыдущем разделе, раздел 3.1.2.2:
Заключение символов в одинарные кавычки (
'
) сохраняет буквальное значение каждого символа в кавычках. Одиночная кавычка может отсутствовать между одинарными кавычками, даже если ей предшествует обратная косая черта.
Объединяя две экспозиции,
echo "'$a'"
где переменная a
не определена (следовательно, $a
= пустая строка), должна печататься $a
на экране, так как ''
, имея особое значение внутри, защитит $
от специальной интерпретации. Вместо этого это печатает ''
. Почему так?
’, ‘\’, and, when history expansion is enabled, ‘!’." in the manual. But now reading it again I realized the second character is not single quote, ("'") but tilde ("
»). I'Вы неправильно понимаете документацию:
«Имея свое специальное значение» означает , что это интерпретируется специально не буквально. Одиночные кавычки мешают
$
расширяться. Но одинарные кавычки в двойных кавычках являются буквальными символами, то есть они ни на что не влияют. Если вы хотите вывод,$a
то вам нужноecho '$a'
.источник