Je sais que le contenu des guillemets doubles est élargi, alors que le contenu des guillemets simples ne sont pas, de sorte que
echo '$1'
donne
$1
tandis que
echo "$1"
donne
<the argument - blank in this particular example>
le même que
echo $1
Cependant, la question Bash: comment créer un alias dans .bashrc pour awk avec des parameters m'a amené à me requestr pourquoi des guillemets doubles et non des apostrophes simples étaient utilisés lors de la déclaration de l'alias:
alias cutf="_cutf"
au lieu de
alias cutf='_cutf'
J'aurais employé des guillemets simples comme dans le dernier exemple. La plupart des exemples sur le Web utilisent un seul, à less qu'il y ait une expansion nécessaire. Cependant, dans ce cas, aucune expansion, à mes yeux, n'est apparente. Est-ce que, dans ce cas, ils sont interchangeables ou les guillemets sont-ils nécessaires parce qu'une définition de fonction est employée?
Dans l'exemple que vous mentionnez, où l'extension de l'alias est un seul mot ne contenant aucun caractère sujet à l'expansion, cela ne _cutf
rien à la façon dont vous citez le nom _cutf
:
$ alias cutf="_cutf" $ alias cutf alias cutf='_cutf' $ unalias cutf $ alias cutf='_cutf' $ alias cutf alias cutf='_cutf' $ unalias cutf $ alias cutf=_cutf $ alias cutf alias cutf='_cutf'
Comme vous pouvez le voir dans cette interaction, le callback de la valeur de l'alias cutf
donné le même résultat à chaque fois. Donc, oui, les styles de citation sont interchangeables ici.
Il n'est pas pertinent que l'extension porte sur un nom de fonction: au less avec bash, les alias effectuent une simple substitution textuelle (la définition d'un alias n'est pas évidente, l'appel direct de la fonction sous-jacente semble tout aussi simple) .
C'est une réponse à la question posée par le titre (qui m'a amené ici) plutôt qu'à la question particulière du PO.
Les guillemets sont évalués dynamicment:
alias QS='echo $PWD'
Les guillemets sont évalués au moment de la création et, par la suite, ne changent jamais:
alias QD="echo $PWD"
Le même comportement se trouve dans bash, zsh et, je suppose, d'autres shells.
C'est aussi simple que cela: s'il n'y a pas de variable, les parenthèses sont interchangeables. Le script shell, bien que très utile, est aussi un langage très simple. Je (et d'autres que je connais) ont tendance à utiliser des guillemets doubles par défaut, juste par la force de l'habitude – et je n'ai jamais rencontré de problèmes.