Esistono tre meccanismi di quotazione: il carattere di escape , virgolette singole e virgolette doppie.
Una barra rovesciata non quotata ( \ ) è il
carattere di escape . Conserva il valore letterale del carattere successivo che segue, ad eccezione di <newline>. Se viene visualizzata una coppia \ <newline> e la barra rovesciata non viene citata, la \ <newline> viene trattata come una continuazione di riga (ovvero viene rimossa dal flusso di input e effettivamente ignorata).
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.
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 ,! . I caratteri $ e ` mantengono il loro significato speciale tra virgolette doppie. La barra rovesciata conserva il suo significato speciale solo se seguita da uno dei seguenti caratteri: $ , ` , " ,
\ o <newline> . Una virgoletta doppia può essere citata tra virgolette precedenti precedendola con una barra rovesciata. Se abilitata, l'espansione della cronologia sarà eseguito a meno che un! apparire tra virgolette viene evitato usando una barra rovesciata. La barra rovesciata che precede il ! non viene rimosso.
I parametri speciali * e @ hanno un significato speciale tra virgolette (vedi PARAMETRI di seguito).
Le parole del modulo $ ' stringa ' sono trattate in modo speciale. La parola si espande in stringa , con i caratteri con escape backslash sostituiti come specificato dallo standard ANSI C. Le sequenze di escape barra rovesciata, se presenti, sono decodificate come segue:
\ a alert (campana)
\ b backspace
\ e
\ E un carattere di escape
\ f feed feed
\ n nuova riga
\ r ritorno a capo
\ t scheda orizzontale
\ v scheda verticale
\\ barra rovesciata
\ ' virgoletta singola
\ " virgoletta doppia
\ nnn il carattere a otto bit il cui valore è il valore ottale nnn
(da una a tre cifre)
\ x HH il carattere a otto bit il cui valore è il valore esadecimale HH
(una o due cifre esadecimali)
\ uHHHH il carattere Unicode (ISO / IEC 10646) il cui valore è
il valore esadecimale HHHH (da una a quattro cifre esadecimali)
\ U HHHHHHHH
il carattere Unicode (ISO / IEC 10646) il cui valore è
il valore esadecimale HHHHHHHH (da una a otto cifre esadecimali)
\ c x un carattere control- x
Il risultato espanso è tra virgolette singole, come se il segno del dollaro non fosse stato presente.
Una stringa tra virgolette preceduta da un simbolo di dollaro ( $ " stringa " ) farà sì che la stringa venga tradotta in base alle impostazioni internazionali correnti. Se la locale corrente è C o POSIX , il simbolo del dollaro viene ignorato. Se la stringa viene tradotta e sostituita, la sostituzione viene racchiusa tra virgolette.
"$HOME"
o parametri"${USER:-root}"
, la sostituzione dei comandi in una forma"$(date)"
o"`date`"
, l'espansione aritmetica, l'espansione della"$((1 + 2))"
cronologia"!!"
o l'escape di barra rovesciata"\\"
. Utilizzare invece virgolette singole. Vedi la pagina man del manuale di bash, la sezione intitolata "Citando".