47 votes

Différences entre les guillemets doubles " ", les guillemets simples ' ' et les barres obliques ` ` sur la ligne de commande ?

Je vois souvent des tutoriels sur le web ou des articles sur ce site qui font un usage intensif des caractères suivants dans la ligne de commande. Il semble souvent qu'ils soient utilisés à des fins assez similaires. Quelles sont les différences entre eux lorsqu'ils sont utilisés en ligne de commande ou pour la programmation Shell ? Dans quel but dois-je utiliser l'un ou l'autre de ces caractères ?

" " double quotes

' ' single quotes

` ` backticks

48voto

Seun Osewa Points 3243

À titre d'exemple, considérons que la variable foo contient uname ( foo=uname ).

  • echo "$foo" sorties uname en remplaçant les variables dans le texte.
    • Pour un littéral $ caractère à l'intérieur " citations, utiliser \$ ; pour un littéral " , utiliser \" .
  • echo '$foo' sorties $foo , la chaîne exacte.
    • Même ' ne peut pas être échappé en tant que \' à l'intérieur ' des citations. Mais vous pouvez utiliser 'foo'\''bar' .
  • echo `$foo` sorties Linux exécutant le contenu de la variable et echo l'imprimer.

6voto

Thomas Points 715

Les guillemets simples ( '' ) sont utilisés pour préserver la valeur littérale de chaque caractère entre guillemets.

L'utilisation de guillemets doubles ( "" ), la valeur littérale de tous les caractères inclus est préservée, à l'exception du signe du dollar ( $ ), les backticks (guillemets simples inversés, `` ) et la barre oblique inverse ( \ ).

Lorsqu'ils sont enfermés dans des tiques dorsales ( `` ), le Shell interprète quelque chose comme signifiant "la sortie de la commande à l'intérieur de la virgule". On parle alors de "substitution de commande", car la sortie de la commande est substituée à la commande elle-même.

des références :

3voto

ubfan1 Points 14936
echo '$HOME' is "$HOME"

Les guillemets simples empêchent l'expansion de la variable, tandis que les guillemets doubles l'autorisent.

2voto

Bob Points 940

Je parle en général, mais.. :

"" - Utilisé pour traiter certaines informations à l'intérieur d'eux avant la sortie. (Comme en PHP).

  • Par exemple : name=NESS; echo "Hello my name is $name" s'affichera : Hello my name is NESS

'' - Permet d'afficher la sortie telle qu'elle est. (Comme en PHP).

  • En utilisant l'exemple ci-dessus, il affichera Hello my name is $name

La différence entre les guillemets doubles et simples est donc que les guillemets doubles traitent la variable et affichent la valeur, tandis que les guillemets simples affichent le nom de la variable sans traitement.

`` - Utilisé pour citer des commandes qui sont ensuite assignées à une autre variable.

1voto

AdamB Points 1290

Les guillemets simples encadrent une valeur qui doit être prise au pied de la lettre : tous les types d'expansion sont supprimés. Généralement utilisé si la valeur inclut ou peut inclure des espaces blancs (espace, tabulation, nouvelle ligne), ou des caractères spéciaux ( $ , \ , ` ) que l'utilisateur ne souhaite pas voir développer/traiter spécialement par le Shell.

Les guillemets doubles entourent une valeur qui sera remplacée par des variables et des caractères. Requis lorsque la sortie peut contenir des espaces blancs et doit être assignée comme une valeur unique.

Les guillemets encadrent une commande dont les résultats sont souhaités en tant que valeur. Les shells les plus récents permettent l'utilisation de $(...) à la place de `...` . Je préfère la nouvelle méthode.

Le code suivant peut aider à comprendre ce qui se passe.

CMD='ls .'
echo sq: $CMD
set $CMD
echo raw 1: $1
echo raw: $\*
set "$CMD"
echo dq: $1
echo bq: \`$CMD\`
echo new: $($CMD)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X