Nella sezione 3.1.2.3 intitolata Double Quotes, il manuale di Bash dice:
Racchiudere i caratteri tra virgolette doppie ('"') conserva il valore letterale di tutti i caratteri tra virgolette, ad eccezione di '$', '`', '\' e, quando l'espansione della cronologia è abilitata, '!'.
Al momento mi occupo dell'unica citazione ( '
).
È un significato speciale, descritto nella sezione precedente, la sezione 3.1.2.2 è:
Racchiudere i caratteri tra virgolette singole (
'
) conserva il valore letterale di ciascun carattere tra virgolette. Tra virgolette singole non può verificarsi una virgoletta, anche se preceduta da una barra rovesciata.
Combinando le due esposizioni,
echo "'$a'"
dove la variabile a
non è definita (quindi $a
= stringa nulla), dovrebbe essere stampata $a
sullo schermo, poiché ''
, avendo il suo significato speciale all'interno, sarebbe protetta $
dall'interpretazione speciale. Invece, stampa ''
. Perchè così?
’, ‘\’, 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' Sono grato per la tua rapida risposta, grazie!