Réponse courte
Compte tenu de la syntaxe $(command) &
, le résultat est le même que si vous avez pris la sortie en cours d' exécution juste command
et essayé de courir que comme une commande. Et tout cela se ferait en arrière-plan, ce qui signifie qu'il n'y aurait pas de sortie visible ou de suspension dans le terminal.
Par exemple, si nous avions un fichier texte nommé mycommand.txt
avec le contenu:
echo "Hello World"
Ensuite, la commande
$(cat mycommand.txt) &
serait équivalent à courir
echo "Hello World" &
Mais depuis que nous avons ajouté l'esperluette ( &
), nous ne verrions aucune sortie de cette commande, donc ce serait assez inutile dans cet exemple.
Réponse longue (explication)
Signe dollar $
(variable)
Le signe dollar devant la chose entre parenthèses se réfère généralement à une variable. Cela signifie que cette commande transmet un argument à cette variable à partir d'un script bash ou obtient la valeur de cette variable pour quelque chose. La différence dans les scripts bash pour appeler et déclarer des variables est la suivante:
Déclarez une variable sans le signe dollar et appelez-la avec un signe dollar. Par exemple, un script qui contient ce
#!/bin/bash
STR="Hello World!"
echo $STR
Sortirait cela
Hello World!
Parenthèse ()
- Substitution de commande
La substitution de commande permet à la sortie d'une commande de remplacer la commande elle-même. La substitution de commande se produit lorsqu'une commande est incluse comme suit:
$(command)
ou
`command`
Bash effectue l'expansion en exécutant la commande dans un environnement de sous-shell et en remplaçant la substitution de commande par la sortie standard de la commande, avec tous les retours à la ligne supprimés. Les sauts de ligne incorporés ne sont pas supprimés, mais ils peuvent être supprimés lors du fractionnement des mots. La substitution de commande $(cat file)
peut être remplacée par l'équivalent mais plus rapidement $(< file)
.
Esperluette &
- Processus d'arrière-plan
Et puis l'esperluette, ou &
symbole, est, comme vous l'avez dit, utilisé pour l'exécuter en arrière-plan.
$( )
, mais il n'y a pas de repos. C'est juste$(command) &
, c'est ce qui me déroute.