我有以下bash脚本,我们可以称其为script1.sh
:
#!/bin/bash
exec ./script2.sh &
sleep 5
if job1 is alive then #<--- this line is pseudo-code!
exec ./script3.sh &
wait
fi
可以看出,脚本将script2.sh
作为后台作业执行,然后等待5秒钟(因此script2.sh
可以执行一些初始化工作)。如果初始化成功,则script2.sh
作业仍将保持活动状态,在这种情况下,我还想同时启动script3.sh
。如果没有,我只想退出。
但是,我不知道如何检查第一个作业是否还活着,因此要检查伪代码行。那么,应该用什么代替呢?
sleep 30 &
if ps -p $! >&-; then
wait $!
else
jobs
fi
./script2 &
myPid=$!
sleep 5
if kill -0 "$myPid"; then
script3 &
wait
fi
if jobs %%; then
exec ./script3.sh &
wait
fi
[jobs %%
打印最近的后台进程的作业ID(“当前作业”),如果成功则返回0,否则返回1。
#!/bin/bash
./script2.sh&
pid1=$!
if kill -0 $pid1; then
./script3.sh&
pid3=$!
wait
fi