Ich bin neu zu schälen, ich habe gerade erfahren, dass die Verwendung (Befehl) einen neuen Sub-Shell schaffen und den Befehl exec, so dass ich versuchen, die pid des Vater Shell und Subshell zu drucken:über Shell und Subshell
#!/bin/bash
echo $$
echo "`echo $$`"
sleep 4
var=$(echo $$;sleep 4)
echo $var
Aber die Antwort ist:
$./test.sh
9098
9098
9098
Meine Fragen sind:
- Warum nur drei Echo druckt? Es gibt 4 Echos in meinem Code.
- Warum drei pids gleich sind? Subshells Pid ist offensichtlich nicht identisch mit dem seines Vaters.
Vielen Dank für Antworten :)
Wenn Sie "man bash" konsultieren, Antwort die Informationen in paxdiablo die unter den Positionen Befehl Substitution und Spezielle Parameter gefunden wird. – minopret
Ich würde zwei Dinge hinzufügen: 1.dass es im Code * 5 * Echos gibt, von denen zwei als Strings erfasst werden (ein Echo wird sofort, das andere in var gespeichert). 2. In bash 4.0 und höher wird die Umgebungsvariable "$ BASHPID" die PID der Subshell ausgeben. Bash 4.0 ist noch nicht üblich, versuchen Sie bash --version, um Ihre zu sehen. – Mike
cool, danke viel ~ – Coaku