Réponses:
C'est très similaire aux backticks ''.
Cela s'appelle la substitution de commandes ( spécification posix ) et il appelle un sous-shell. La commande entre les accolades $()
ou entre les pointes (``) est exécutée dans un sous-shell et la sortie est ensuite placée dans la commande d'origine.
Contrairement aux backticks, le $(...)
formulaire peut être imbriqué. Vous pouvez donc utiliser la substitution de commandes dans une autre substitution.
Il existe également des différences dans les caractères d'échappement au sein de la substitution. Je préfère la $(...)
forme.
echo `echo \`echo foo\`` bar
Dans Posix ou POSIX comme des coquilles ( ksh
, bash
, ash
, zsh
, yash
...), il est comme ``
: la commande à l' intérieur $()
est exécuté et remplacé par sa sortie standard. Le fractionnement de mots et la génération de noms de fichiers sont effectués, sauf s'ils $()
se trouvent entre guillemets. Donc
chmod 777 $(pwd)
devrait être remplacé par:
chmod 777 "$(pwd)"
pour éviter le fractionnement de mots et la génération de noms de fichiers sur le chemin du répertoire de travail actuel.
Ou encore mieux (sauf sous certains shells, comme zsh, au cas où le répertoire a été renommé):
chmod 777 "$PWD"
Depuis $PWD
est une variable spéciale qui contient le chemin d'accès au répertoire de travail actuel dans les shells POSIX.
Ou encore mieux:
chmod 777 .
Étant donné que l' .
entrée dans le répertoire actuel est un lien dur vers ce répertoire lui-même.
Ceci $()
est utilisé pour exécuter une commande principalement dans une autre commande.
chmod 777 $(pwd)
pwd
donne le répertoire de travail actuel. Ainsi, lorsque tout est exécuté, la sortie de pwd remplacera sa position et servira d'argument à chmod
, et le résultat est que tout votre répertoire de travail actuel obtient l'autorisation 777
qui, je suppose, ne devrait jamais être utilisée dans un environnement de production;).