2013-08-27 71 views
4

是否$!存在於bash/shell腳本中,如果是的話,請告知它的用途。爲什麼在命令行上運行echo $!時爲空?

+0

另請參閱[什麼意思$$或$!在bash?](http://stackoverflow.com/questions/13671750/what-does-mean-or-in-bash/) – devnull

+0

我想知道爲什麼上面downvoted(和關閉),這一個優點* upvotes *! – devnull

回答

5

除了對方的回答跑的PID,這種回聲

echo $! 

將打印空白的,如果你還沒有運行任何過程在當前shell中的背景中。如果你現在運行:

date & 
echo $! 

然後,它會打印出類似這樣(最後執行的後臺進程即進程ID):

47833 
4

$!是最後一個節目你的shell在後臺

+0

任何想法,它是如何得到已被殺死或完成的最後一個後臺進程的PID? – pRAShANT

+2

@pRAShANT沒有簡單的方法。您可以使用您選擇的數組類型保存所有進程的記錄,然後使用SIGCHLD陷阱處理程序在每次進程終止/終止時觸發,然後檢查哪個進程不再存在。該方法不準確,特別是如果兩個進程都同時終止。通過'/ proc','kill -s 0'等來檢查進程是否仍然存在,速度也很慢。而且我不確定通過作業控制進行的流程管理總是可行或有效的,不會錯過任何東西。 – konsolebox

0

$! - 顯示在後臺啓動的最後一個進程ID。

相關問題