當在用 shell 開其他子程序時,通常會希望在所有程序結束時做一些處理,最簡單的方式就是用一支迴圈去等待其他子程序的結束,這裡用到 jobs 這個指令去檢查子程序是不是還在執行。
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
# job msg log temp file
MSG_LOG=/tmp/job_log
rm -f $MSG_LOG
# background job function
bg_job(){
JOB=$1
sleep $JOB
echo $JOB "End" >> $MSG_LOG
}
JOB_LIST=(
"5"
"6"
"3"
"4"
)
# run all job
for FLASH in "${JOB_LIST[@]}" ; do
bg_job $FLASH &
done
# Waiting for the end of all the job
while [ "j$(jobs -r)" != "j" ] ; do
sleep 1
done
# show job msg
cat $MSG_LOG
echo "<< bg_job all complete >>"
exit 0;
沒有留言:
張貼留言
你好!歡迎你在我的 Blog 上留下你寶貴的意見。