(1 odpověď)
Uzavřeno před 2 lety .
Používal jsem ''
a ""
(jednoduché a dvojité uvozovky) zaměnitelně na příkazovém řádku, ale nedávno jsem si všiml, že '$HOME/some/dir'
není rozbalen, zatímco "$HOME/some/dir"
je. Trochu jsem prohledal a našel jsem, že ""
umožňuje některé ochrana speciálních znaků, zatímco ''
umožňuje plnou ochranu. Jaké další znaky jsou tedy chráněny ''
a ne ""
?
EDIT:Jaké jsou praktické situace, ve kterých mohou být tyto rozdíly významné?
Přijatá odpověď:
Podívejte se na manuálovou stránku bash. Je tam celá sekce o citacích. Protože je to licencováno pod GFDL, která není kompatibilní se zde použitou licencí CC-BY-SA, nebudu citovat celou věc, ale opravdu přečtení je ta nejdefinitivnější odpověď.
Stručně řečeno, jednoduché uvozovky zastavují veškerou interpretaci – řetězec je vykreslen doslovně. Dvojité uvozovky ponechávají $
(znak dolaru), ` (backquote) jako speciální a (obrácené lomítko) jako speciální, když následují určité další znaky. A
!
bude zpracováno speciálně, pokud je povolena funkce rozšíření historie (což je ve výchozím nastavení).
V praktickém použití, $
je velký problém, protože člověk může často chtít různá rozšíření, která umožňuje (proměnné a další), a přitom zabránit shellu zmatkovat většinu příkazového řádku.