Als «subshell» getaggte Fragen

51
Ist $ () eine Subshell?

Ich verstehe die Subshell-Syntax als (<commands...>), ist $()nur eine Subshell, von der Sie Variablenwerte abrufen können? Hinweis: Dies gilt für Bash 4.4 basierend auf unterschiedlichen Formulierungen in der

47
Warum beendet (exit 1) das Skript nicht?

Ich habe ein Skript, das nicht beendet wird, wenn ich es möchte. Ein Beispielskript mit demselben Fehler ist: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' Ich würde davon ausgehen, die Ausgabe zu sehen: :~$ ./test.sh 1 :~$ Aber ich sehe tatsächlich: :~$ ./test.sh 1...

31
Bash-Subshell-Erstellung mit geschweiften Klammern

Nach dieser , eine Liste von Befehlen zwischen geschweiften Klammern Platzieren bewirkt , dass die Liste in dem aktuellen Shell Kontext ausgeführt werden. Es wird keine Subshell erstellt . Verwenden Sie ps, um dies in Aktion zu sehen Dies ist die Prozesshierarchie für eine Prozesspipeline, die...

30
Shell-Skript aus einer Subshell beenden

Betrachten Sie dieses Snippet: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Normalerweise funcführt der Aufruf dazu, dass das Skript beendet wird. Dies ist das beabsichtigte Verhalten. Wenn es jedoch in einer Sub-Shell wie in...

24
Wie kann ich erkennen, ob ich in einer Subshell bin?

Ich versuche, eine Funktion zu schreiben, die die Funktionalität des exiteingebauten Moduls ersetzt, um zu verhindern, dass ich das Terminal verlasse. Ich habe versucht, die SHLVLUmgebungsvariable zu verwenden, aber sie scheint sich innerhalb von Subshells nicht zu ändern: $ echo $SHLVL 1 $ ( echo...

24
Regel zum Aufrufen von Subshell in Bash?

Ich scheine die Bash-Regel zum Erstellen einer Subshell falsch zu verstehen. Ich dachte, Klammern erzeugen immer eine Subshell, die als eigener Prozess abläuft. Dies scheint jedoch nicht der Fall zu sein. In Code-Snippet A (siehe unten) wird der zweite sleepBefehl nicht in einer separaten Shell...

18
Warum ist eine Variable in einer Subshell sichtbar?

Das Learning Bash Book erwähnt, dass eine Subshell nur Umgebungsvariablen und Dateideskriptoren usw. erbt und keine Variablen, die nicht exportiert werden: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Wie ich weiß, erstellt die Shell zwei Subshells für ()und...

16
Stateful-Bash-Funktion

Ich möchte eine Funktion in Bash implementieren, die bei jedem Aufruf die Anzahl erhöht (und zurückgibt). Leider scheint dies nicht trivial zu sein, da ich die Funktion in einer Subshell aufrufe und folglich die Variablen der übergeordneten Shell nicht ändern kann. Hier ist mein Versuch: PS_COUNT=0...

14
Wird die Falle von einer Unterschale geerbt?

Ich habe folgendes Skript ausprobiert: #!/bin/bash trap 'echo "touching a file" && touch $FILE' EXIT foo1(){ echo "foo1" } foo(){ echo "foo" export FILE=${FILE:-/tmp/file1} } (foo1) foo Die Ausgabe für das obige Skript war: [root@usr1 my_tests]# ./test.sh foo1 foo touching a file Ich hatte...

13
Hervorhebung der Bash-Syntax von Subshells

Angesichts der Vielzahl von Fragen, die sich im Zusammenhang mit Subshells in Bash herausstellen ("Warum erhöht sich meine Variable in dieser Pipeline- while readSchleife nicht ?"), Dachte ich nur, es wäre sehr schön, auf einen Editor oder Dienst mit Code zu verweisen Die in Subshells auszuführende...

12
Wie kann ich die PID einer Subshell erhalten?

Wie kann ich die PID einer Subshell erhalten? Zum Beispiel: $ echo $$ 16808 Dies funktioniert nicht, da die ursprüngliche Shell erweitert wird $$: $ ( echo $$ ) 16808 Warum funktioniert das einfache Zitieren nicht? Erweitert $$sich die Unterschale nicht in sich selbst, nachdem die ursprüngliche...