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)