Ich möchte die PID von Bash und markieren Sie es, wenn es in einer Textdatei ist (angenommen, es ist). Also, wenn ich schreibe dies in meinem Shell:Wie grep die Pidof Bash in einem Shell-Skript?
grep -o $(pidof bash) test.txt
es nur funktioniert gut und gibt mir die gewünschte Ausgabe, die PID bash. Warum wird dieses Skript nicht funktioniert:
#!/bin/bash
PID=$(grep -o $(pidof bash) test.txt)
echo $PID
erhalte ich nur ein paar Zeilen mit:
grep: xxx: Datei oder das Verzeichnis nicht
gefunden
xxx Zufallszahlen sind, aber normalerweise ist der letzte derjenige, den ich suche.
Wie erreiche ich das und warum funktioniert das obige nicht?
Hat das etwas mit dem Erstellen eines neuen Prozesses durch die Shell zu tun, wenn grep im Skript aufgerufen wird?
Vielen Dank.
'$ BASH_PID' ist das richtige Werkzeug oder' $$ '(abhängig davon, welche Shell-PID Sie haben wollen - die Parent-Shell oder die Subshell, die mit' $() 'gestartet wurde). –
... 'pidof' ist im Allgemeinen ein Werkzeug, das man am besten vermeidet, es sei denn, man kann keinen besseren Weg finden, einen bestimmten Prozess zu identifizieren - irgendein System wird * viele * Bash-Instanzen haben, die zu einer bestimmten Zeit laufen. –