Linux
為什麼是“雖然殺死-0磷一世D____not’untilkill-0磷一世D’一種ndn這噸’在n噸一世lķ一世ll−0PID’ and not ‘until kill -0PID”?
我可能在這裡很愚蠢,但是如果我想在程序執行時做某事,我為什麼要這樣做:
while kill -0 $PID do #... done
代替
until kill -0 $PID do #... done
?
kill -0``1
如果找不到該程序,並且0
如果找到該程序,則以程式碼退出:$ kill -0 123444 -bash: kill: (123444) - No such process $ echo $? 1 $ screen -ls | grep rofl 28043.rofl (02/19/2015 02:27:56 PM) (Detached) $ kill -0 28043 $ echo $? 0
因此,如果程序正在執行,while 循環不會歸結為:
while 0 do #... done
那麼哪個永遠不會執行?
處理返回碼時,“0”表示成功,非零表示失敗。while 循環的語法是:
while COMMANDS; do ...; done
該
while
語句檢查提供的命令列表中最後一個命令的返回碼。在您的最後一個範例中while 0
,這將嘗試執行一個名為“0”的命令並檢查它的返回碼。文字 0 對於算術上下文之外的 bash 並不特殊。在該上下文中,0被認為是錯誤的。例如
while (( 0 )); do ... # never executes end
這種情況很特殊,因為關鍵字
((
被視為命令,它返回非零,因為它的結果是 0。