2011-05-31 87 views
0

我有這樣的:在這個腳本中如何等待?

#!/bin/bash 

trap 'echo $? $?' SIGINT 

for i in `seq 10` 

do 

echo hello from for 

sleep 10 

done & 

bgproc=$! 

echo bgproc is $bgproc 

ps -o pid,ppid,cmd 

echo "waiting now" 
wait $bgproc 

kill -2 <pid> 

,並得到

0 0 

爲O/P

問:

當我發送SIGINT到這個腳本。

它爲什麼終止?我知道這是因爲最後的等待聲明。但那裏發生了什麼?

+0

可能出現[能否訪問陷阱中的退出命令的代碼?]的副本(http://stackoverflow.com/questions/6176834/can-you-access-the-code-of-an-exit-命令在陷阱) – 2011-05-31 01:14:01

+0

雖然不是一個確切的重複。我也在問等待命令在這裏如何表現。 – abc 2011-05-31 01:21:18

+0

來自bash初學者指南第139頁:「當Bash通過內置的等待等待一個異步命令時,接收到一個已設置了陷阱的信號將導致內置的等待立即以退出狀態返回大於128,緊接着陷阱被執行。「 – abc 2011-05-31 01:30:26

回答

2

當Bash通過內置等待等待異步命令時,接收到已經設置了陷阱的信號將立即立即返回,退出狀態大於128,立即返回之後陷阱被執行。