GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre $(stuff) et `stuff` ?

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 🙂


Linux
  1. Quelle est la différence entre le point-virgule et la double esperluette && ?

  2. La différence entre .exrc et .vimrc ?

  3. Quelle est la différence entre un utilisateur normal et un utilisateur système ?

  4. La différence entre '$ . Foo' Et '$ ./foo' ? ?

  5. La différence entre "env" et "printenv" ?

Quelle est la différence entre InnoDB et MyISAM ?

Quelle est la différence entre Linux et Unix ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

Quelle est la différence entre ls et l ?

Quelle est la différence entre unlink et rm ?