(1 réponse)
Fermé il y a 2 ans .
J'avais l'habitude d'utiliser ''
et ""
(guillemets simples et doubles) indifféremment sur la ligne de commande, mais j'ai récemment remarqué que '$HOME/some/dir'
n'est pas développé, tandis que "$HOME/some/dir"
est. J'ai cherché un peu et j'ai trouvé que ""
autorise certains protection des caractères spéciaux, tandis que ''
permet une protection complète. Alors quels autres caractères sont protégés par ''
et non ""
?
EDIT :Quels sont les éléments pratiques situations dans lesquelles ces différences pourraient être significatives ?
Réponse acceptée :
Jetez un œil à la page de manuel de bash. Il y a une section entière sur les citations. Parce que cela est sous licence GFDL, qui n'est pas compatible avec la licence CC-BY-SA utilisée ici, je ne citerai pas tout, mais vraiment lire cela est la réponse la plus définitive.
En résumé, les guillemets simples arrêtent toute interprétation - la chaîne est rendue littéralement. Les guillemets doubles laissent $
(signe dollar), ` (backquote) comme spécial, et (barre oblique inverse) comme spécial lorsqu'il est suivi de certains autres caractères. Et
!
sera traité spécialement si la fonctionnalité d'extension de l'historique est activée (ce qui est le cas par défaut).
En pratique, le $
est le gros problème, car on peut souvent vouloir les diverses extensions qu'il permet (variables et plus), tout en empêchant le shell de brouiller la majeure partie de la ligne de commande.