Je vois souvent des tutoriels sur le Web ou des publications sur ce site qui utilisent beaucoup les caractères suivants sur la ligne de commande. Il semble souvent qu'ils soient utilisés à des fins similaires. Quelles sont les différences entre eux lorsqu'ils sont utilisés sur la ligne de commande ou pour la programmation shell? Dans quel but dois-je utiliser lequel?
" " double quotes
' ' single quotes
` ` backticks
\
est toujours traité littéralement lorsqu'il est mis entre guillemets, même s'il précède un'
. Après une ouverture'
, la suivante'
est toujours interprétée comme le dernier devis. Vous'
pouvez obtenir quelque chose comme citer une chaîne entre guillemets simples en mettant fin à la citation, en s'échappant'
individuellement et en recommençant. Autrement dit, même si\'
cela ne fonctionne pas entre les'
personnages qui ouvrent et ceux qui font la fermeture ,'\''
ça fonctionne. (Voir la correction de Gilles à l'un de mes messages quand j'avais commis la même erreur pour plus de détails.)Ceci est très bien expliqué dans la section correspondante du manuel de bash. En bref, tout ce qui est entre guillemets simples est interprété littéralement. Donc, par exemple:
Comparez cela aux versions non citées:
Les guillemets doubles permettent une expansion variable (aussi l'expansion de l'historique et quelques autres choses). Fondamentalement, vous les utilisez lorsque vous avez affaire à quelque chose que vous voulez voir étendu. Par exemple:
En d'autres termes, les guillemets simples protègent complètement une chaîne du shell tandis que les guillemets doubles protègent certaines choses (les espaces, par exemple), mais permettent aux variables et aux caractères spéciaux d'être développés / interprétés correctement.
la source
Les guillemets simples (
''
) sont utilisés pour conserver la valeur littérale de chaque caractère compris entre les guillemets.Avec des guillemets doubles (
""
), la valeur littérale de tous les caractères inclus est préservée, à l'exception du signe dollar ($
), des backticks (guillemets simples en arrière``
) et de la barre oblique inversée (\
).Lorsqu'il est enfermé dans des symboles antérieurs (
``
), le shell interprète le terme "sortie de la commande à l'intérieur des symboles antérieurs". Ceci est appelé "substitution de commande", car la sortie de la commande est substituée à la commande elle-même.les références:
la source
Les guillemets simples empêchent le développement de variables, alors que les guillemets doubles le permettent.
la source
Je parle simplement en général mais:
""
- Utilisé pour traiter certaines informations à l'intérieur d'eux avant la sortie. (Comme en PHP.)name=NESS; echo "Hello my name is $name"
affichera:Hello my name is NESS
''
- Utilisé pour afficher la sortie telle quelle. (Également comme en PHP.)Hello my name is $name
Ainsi, la différence entre les guillemets simples et doubles réside dans le fait que les guillemets doubles traitent la variable et affichent la valeur, tandis que les guillemets simples indiquent le nom de la variable sans traitement.
``
- Utilisé pour citer des commandes qui sont ensuite assignées à une autre variable.la source
Les guillemets simples renferment une valeur à prendre littéralement: tous les types d'expansion sont supprimés. Habituellement utilisé si la valeur contient ou peut contenir un espace blanc (espace, tabulation, nouvelle ligne), ou des caractères spéciaux (
$
,\
,`
) que l'utilisateur ne veut pas être élargi / traité spécialement par la coquille.Les guillemets doubles renferment une valeur qui comportera des variables et le remplacement des caractères. Obligatoire lorsque la sortie peut contenir des espaces et doit être affectée en tant que valeur unique.
Les guillemets arrières renferment une commande dont les résultats sont recherchés en tant que valeur. Les nouvelles coquilles permettent l’utilisation
$(...)
de`...`
. Je préfère la nouvelle méthode.Le code suivant peut aider à comprendre ce qui se passe.
la source