我有一个存储在文件中的pid:
echo 394 > pid_stored
我正在检查pid是否正在运行:
kill -0 $(cat pid_stored) 2> /dev/null || echo "PID not running"
就像魅力一样,但如果我想在真或假的情况下做多个动作,我想我需要一个if if fi结构。但由于某种原因,我无法弄清楚[或[[不以同样的方式评估:
if [[ $(kill -0 $(cat pid_stored) 2> /dev/null) ]]
then echo "PID IS NOT RUNNING"
fi
不起作用,它总是评估为真。错误流以2> 2指示。 to / dev / null因为如果pid存在或失败,kill -0的计算结果为true
谢谢!
答案 0 :(得分:4)
删除[[ and ]]
,因为它用于评估表达式:
if kill -0 $(<pid_stored) 2> /dev/null
then
echo "PID IS RUNNING"
else
echo "PID IS NOT RUNNING"
fi
PS:您可以使用cat
$(<pid_stored)
否定你可以使用:
if ! kill -0 $(<pid_stored) 2> /dev/null