(1 risposta)
Chiuso 2 anni fa .
Usavo ''
e ""
(virgolette singole e doppie) in modo intercambiabile sulla riga di comando, ma di recente ho notato che '$HOME/some/dir'
non è espanso, mentre "$HOME/some/dir"
è. Ho cercato un po' e ho trovato quel ""
consente alcuni protezione dei caratteri speciali, mentre ''
consente una protezione totale. Quindi quali altri caratteri sono protetti da ''
e non ""
?
EDIT:Cosa sono pratici situazioni in cui queste differenze potrebbero essere significative?
Risposta accettata:
Dai un'occhiata alla pagina man di bash. C'è un'intera sezione sulla citazione. Poiché questa licenza è concessa in base alla GFDL, che non è compatibile con la licenza CC-BY-SA utilizzata qui, non citerò il tutto, ma leggendo davvero che è la risposta più definitiva.
In sintesi, le virgolette singole interrompono ogni interpretazione:la stringa viene resa letteralmente. Le virgolette doppie lasciano $
(segno del dollaro), ` (backquote) come speciale e (barra rovesciata) come speciale se seguito da determinati altri caratteri. E
!
verrà trattato in modo speciale se la funzione di espansione della cronologia è abilitata (che è per impostazione predefinita).
Nell'uso pratico, il $
è il grosso problema, poiché spesso si possono desiderare le varie espansioni che consente (variabili e altro), pur impedendo alla shell di confondere la maggior parte della riga di comando.