(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.