Ich habe die folgende Syntax in einem Bash-Skript gesehen:
>$(command) &
Ich weiß, dass das kaufmännische Und &
am Ende einen Befehl im Hintergrund ausführen lässt, aber ich habe ihn noch nie in Kombination mit dem Dollarzeichen und den Klammern um den Befehl gesehen.
Was tut es?
$( )
, aber es gibt keine Ruhe. Es ist nur so$(command) &
, was mich verwirrt.Antworten:
Kurze Antwort
In Anbetracht der Syntax
$(command) &
ist das Ergebnis dasselbe, als hätten Sie die Ausgabe von "just just" genommencommand
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:Dann der Befehl
wäre gleichbedeutend mit laufen
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
Würde dies ausgeben
Klammer
()
- BefehlsersetzungDurch die Befehlsersetzung kann die Ausgabe eines Befehls den Befehl selbst ersetzen. Die Befehlsersetzung erfolgt, wenn ein Befehl wie folgt eingeschlossen ist:
oder
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
&
- HintergrundprozessUnd dann wird das kaufmännische Und oder
&
Symbol, wie Sie sagten, verwendet, um es im Hintergrund auszuführen.quelle
Es nimmt die Ausgabe von "Befehl" als Befehl und führt diese im Hintergrund aus. Seine funktionale ist vergleichbar mit "eval"
quelle