Kurze Antwort
In Anbetracht der Syntax $(command) &
ist das Ergebnis dasselbe, als hätten Sie die Ausgabe von "just just" genommen command
und dann versucht , dies als Befehl auszuführen . Und all dies würde im Hintergrund erfolgen, was bedeutet, dass keine sichtbare Ausgabe vorhanden wäre oder im Terminal hängen würde.
Wenn wir zum Beispiel eine Textdatei mycommand.txt
mit dem Inhalt hatten:
echo "Hello World"
Dann der Befehl
$(cat mycommand.txt) &
wäre gleichbedeutend mit laufen
echo "Hello World" &
Da wir jedoch das kaufmännische Und ( &
) hinzugefügt haben , würden wir keine Ausgabe von diesem Befehl sehen, so dass es in diesem Beispiel ziemlich nutzlos wäre.
Lange Antwort (Erklärung)
Dollarzeichen $
(variabel)
Das Dollarzeichen vor dem Ding in Klammern bezieht sich normalerweise auf eine Variable. Dies bedeutet, dass dieser Befehl entweder ein Argument aus einem Bash-Skript an diese Variable übergibt oder den Wert dieser Variablen für etwas abruft. Der Unterschied beim Bash-Scripting zum Aufrufen und Deklarieren von Variablen ist folgender:
Deklarieren Sie eine Variable ohne das Dollarzeichen und rufen Sie sie mit einem Dollarzeichen auf. Zum Beispiel ein Skript, das dies enthält
#!/bin/bash
STR="Hello World!"
echo $STR
Würde dies ausgeben
Hello World!
Klammer ()
- Befehlsersetzung
Durch die Befehlsersetzung kann die Ausgabe eines Befehls den Befehl selbst ersetzen. Die Befehlsersetzung erfolgt, wenn ein Befehl wie folgt eingeschlossen ist:
$(command)
oder
`command`
Bash führt die Erweiterung durch, indem der Befehl in einer Subshell-Umgebung ausgeführt und die Befehlsersetzung durch die Standardausgabe des Befehls ersetzt wird, wobei alle nachfolgenden Zeilenumbrüche gelöscht werden. Eingebettete Zeilenumbrüche werden nicht gelöscht, können jedoch während der Wortteilung entfernt werden. Die Befehlsersetzung $(cat file)
kann durch die entsprechende ersetzt werden, jedoch schneller $(< file)
.
Kaufmännisches Und &
- Hintergrundprozess
Und dann wird das kaufmännische Und oder &
Symbol, wie Sie sagten, verwendet, um es im Hintergrund auszuführen.
$( )
, aber es gibt keine Ruhe. Es ist nur so$(command) &
, was mich verwirrt.