Devis simple et barre oblique inverse


10
~$ echo $'\'test'
'test

man bash dit:

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.

Pourquoi cela fonctionne-t-il alors dans la echocommande-?

Réponses:


16

Les guillemets simples '...'sont différents des guillemets simples en dollars $'...'. Le premier ne prend en charge aucune barre oblique inverse, tandis que le second utilise la spécification ANSI C.


14

chorobaLa réponse est totalement correcte, voici les détails de man bash:

Les mots de la forme $ 'string' sont traités spécialement. Le mot se développe pour
chaîne, avec des caractères d'échappement antislash remplacés comme spécifié par le C ANSI
la norme. Les séquences d'échappement de barre oblique inverse, le cas échéant, sont décodées comme suit:
              \ une alerte (cloche)
              \ b retour arrière
              \ e
              \ E un personnage d'échappement
              \ f flux de formulaire
              \ n nouvelle ligne
              \ r retour chariot
              \ t onglet horizontal
              \ v onglet vertical
              \\ barre oblique inverse
              \' simple citation
              \" double citation
              \? point d'interrogation
              \ nnn le caractère à huit bits dont la valeur est la valeur octale
                     nnn (un à trois chiffres)
              \ xHH le caractère à huit bits dont la valeur est l'hexadécimal
                     valeur HH (un ou deux chiffres hexadécimaux)
              \ uHHHH le caractère Unicode (ISO / IEC 10646) dont la valeur est le
                     valeur hexadécimale HHHH (un à quatre chiffres hexadécimaux)
              \ UHHHHHHHH
                     le caractère Unicode (ISO / IEC 10646) dont la valeur est le
                     valeur hexadécimale HHHHHHHH (un à huit chiffres hexadécimaux)
              \ cx un caractère control-x

Voilà pourquoi!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.