Bash:使用while或until等待PID不存在

hex*_*ide 7 bash process

我一直在使用Bash等待PID不再存在.我试过了

#!/bin/bash
while [ kill -0 PID > /dev/null 2>&1 ]; do
    //code to kill process
done
//code to execute after process is dead
Run Code Online (Sandbox Code Playgroud)

以及

#!/bin/bash
until [ ! kill -0 PID > /dev/null 2>&1 ]; do
    //code to kill process
done
//code to execute after process is dead
Run Code Online (Sandbox Code Playgroud)

这两个示例都无法工作,或者在进程结束后继续循环.我做错了什么?

Jon*_*ler 17

你应该只是做:

while kill -0 $PID >/dev/null 2>&1
do
    # Code to kill process
done
Run Code Online (Sandbox Code Playgroud)

循环条件测试最后一个命令的退出状态 - 在这种情况下,kill.

'last'的意义在于你可以写:

while sleep 1
      echo Testing again
      kill -0 $PID >/dev/null 2>&1
do
    # Code to kill process
done
Run Code Online (Sandbox Code Playgroud)

这也测试kill(和kill单独)的退出状态.