Bash Citare il testo letterale


Esempio

Tutti gli esempi in questo paragrafo stampano la linea

!"#$&'()*;<=>?  @[\]^`{|}~

Una barra rovesciata cita il carattere successivo, ovvero il successivo carattere viene interpretato letteralmente. L'unica eccezione è una nuova riga: backslash-newline si espande nella stringa vuota.

echo \!\"\#\$\&\'\(\)\*\;\<\=\>\?\ \ \@\[\\\]\^\`\{\|\}\~

Tutto il testo tra virgolette singole (virgolette in avanti ' , anche note come apostrofo) viene stampato letteralmente. Anche il backslash è sinonimo di se stesso ed è impossibile includere una singola citazione; al contrario, è possibile interrompere la stringa letterale, includere una virgoletta singola letterale con una barra rovesciata e avviare nuovamente la stringa letterale. Quindi la sequenza di 4 caratteri '\'' consente effettivamente di includere una singola citazione in una stringa letterale.

echo '!"#$&'\''()*;<=>?  @[\]^`{|}~'
#          ^^^^

Dollar-single-quote inizia una stringa letterale $'…' come molti altri linguaggi di programmazione, dove il backslash riporta il carattere successivo.

echo $'!"#$&\'()*;<=>?  @[\\]^`{|}~'
#           ^^            ^^

Le doppie virgolette " delimitano le stringhe semi-letterali in cui solo i caratteri " \ $ e ` mantengono il loro significato speciale. Questi personaggi hanno bisogno di un backslash prima di loro (si noti che se il backslash è seguito da qualche altro carattere, il backslash rimane). Le doppie virgolette sono utili soprattutto quando si include una variabile o una sostituzione di comando.

echo "!\"#\$&'()*;<=>?  @[\\]^\`{|}~"
#      ^^                 ^^  ^^
echo "!\"#\$&'()*;<=>?  @[\]^\`{|}~"
#      ^^                 ^  ^^      \[ prints \[

Interagire, attenzione ! attiva l'espansione della cronologia tra virgolette doppie: "!oops" cerca un comando più vecchio che contiene oops ; "\!oops" non esegue l'espansione della cronologia ma mantiene il backslash. Questo non succede negli script.