Il existe deux syntaxes pour la substitution de commande :avec des parenthèses dollar et avec des backticks.
Exécution de top -p $(pidof init)
et top -p `pidof init`
donne le même rendement. Ces deux façons de faire sont-elles identiques ou y a-t-il des différences ?
Réponse acceptée :
Les backquotes à l'ancienne ` `
traitez les barres obliques inverses et l'imbrication un peu différemment. Le nouveau style $()
interprète tout ce qui se trouve entre ( )
comme une commande.
echo $(uname | $(echo cat))
Linux
echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat
fonctionne si les guillemets imbriqués sont échappés :
echo `uname | `echo cat``
Linux
antislash amusant :
echo $(echo '\')
\
echo `echo '\'`
Le nouveau style $()
s'applique à tous les shells conformes à POSIX.
Comme l'a souligné mouviciel, l'ancien style ` `
peut être nécessaire pour les coques plus anciennes.
Outre le point de vue technique, l'ancien style ` `
a aussi un désavantage visuel :
- Difficile à remarquer :
I like $(program) better than `program`
- Facile à confondre avec un guillemet simple :
'`'`''`''`'`''`'
- Pas si facile à taper (peut-être même pas sur la disposition standard du clavier)
(et SE utilise ` `
pour son propre usage, c'était pénible d'écrire cette réponse 🙂