Il existe trois mécanismes de citation: le caractère d'échappement , les guillemets simples et les guillemets doubles.
Une barre oblique inverse entre guillemets ( \ ) est le
caractère d'échappement . Il conserve la valeur littérale du caractère suivant qui suit, à l'exception de <newline>. Si une paire \ <newline> apparaît et que la barre oblique inverse n'est pas elle-même citée, la \ <newline> est traitée comme une continuation de ligne (c'est-à-dire qu'elle est supprimée du flux d'entrée et effectivement ignorée).
La présence de caractères entre guillemets simples préserve la valeur littérale de chaque caractère dans les guillemets. Un guillemet simple ne peut pas apparaître entre guillemets simples, même lorsqu'il est précédé d'une barre oblique inverse.
Mettre des caractères entre guillemets conserve la valeur littérale de tous les caractères entre guillemets, à l'exception de $ , ` , \ et, lorsque l'expansion de l'historique est activée ,! . Les caractères $ et ` conservent leur signification particulière entre guillemets doubles. La barre oblique inverse conserve sa signification spéciale uniquement lorsqu'elle est suivie par l'un des caractères suivants: $ , ` , " ,
\ ou <nouvelle> . Un guillemet double peut être cité entre guillemets doubles en le précédant d'une barre oblique inverse. sera effectuée à moins qu'un! apparaissant entre guillemets est échappé à l'aide d'une barre oblique inverse. La barre oblique inverse précédant le ! n'est pas supprimé.
Les paramètres spéciaux * et @ ont une signification particulière lorsqu'ils sont entre guillemets (voir PARAMÈTRES ci-dessous).
Les mots de la forme $ ' string ' sont traités spécialement. Le mot se développe en chaîne , avec des caractères d'échappement antislash remplacés comme spécifié par la norme C ANSI. Les séquences d'échappement de barre oblique inverse, si elles sont présentes, sont décodées comme suit:
\ une alerte (cloche)
\ b retour arrière
\ e
\ E un caractère d'échappement
\ f saut de page
\ n nouvelle ligne
\ r retour chariot
\ t onglet horizontal
\ v onglet vertical
\\ barre oblique inverse
\ ' guillemet simple
\ " guillemet double
\ nnn le caractère à huit bits dont la valeur est la valeur octale nnn
(un à trois chiffres)
\ x HH le caractère à huit bits dont la valeur est la valeur hexadécimale HH
(un ou deux chiffres hexadécimaux)
\ u HHHH le caractère Unicode (ISO / IEC 10646) dont la valeur est
la valeur hexadécimale HHHH (un à quatre chiffres hexadécimaux)
\ U HHHHHHHH
le caractère Unicode (ISO / IEC 10646) dont la valeur est
la valeur hexadécimale HHHHHHHH (une à huit chiffres hexadécimaux)
\ c x un Control- x caractère
Le résultat étendu est guillemet simple, comme si le signe dollar n'était pas présent.
Une chaîne entre guillemets précédée d'un signe dollar ( $ " chaîne " ) entraînera la traduction de la chaîne en fonction des paramètres régionaux actuels. Si les paramètres régionaux actuels sont C ou POSIX , le signe dollar est ignoré. Si la chaîne est traduite et remplacée, le remplacement est entre guillemets.
"$HOME"
ou les paramètres d' extension"${USER:-root}"
, la substitution de commandes sous forme"$(date)"
ou"`date`"
l'expansion arithmétique, l'expansion de l'"$((1 + 2))"
historique"!!"
ou l'échappement de barre oblique inverse"\\"
. Utilisez plutôt des guillemets simples. Voir la page de manuel du manuel bash, la section intitulée "Quoting".