技术解析
开了 3 个后台进程,等待这三个都结才束退出脚本:
(echo aaa >> /dev/null;sleep 10; exit 0)&
(echo bbb >> /dev/null;sleep 11; exit 1)&
(echo ccc >> /dev/null;sleep 9; exit 0)&
for((i=0;i<3;i++)); do
j=$(echo "$i+1" | bc -l)
wait %$j
echo $?
done
这里面的 wait %$j 没搞懂...... 这个% 干嘛的? j 打印出来是 1,2,3 等待 wait %1 %2 %3 什么个意思?
涨知识了 在脚本内加 jobs 确实能看到所有的任务
[1] Running ( echo aaa >> /dev/null; sleep 10; exit 0 ) &
[2]- Running ( echo bbb >> /dev/null; sleep 11; exit 1 ) &
[3]+ Running ( echo ccc >> /dev/null; sleep 9; exit 0 ) &
在终端运行 jobs 就不行了 哈哈看来我还是很菜啊~~~
为什么不用 for((i=1;i<=3;i++)) 啊?
为啥还要 bc 计算?直接 i=1 2 3 不行?
wait 那里不要循环,前面命令加&后台运行后,最后一行这样就行了: wait $(jobs -p)
这不是我写的脚本 我也纳闷我老大为什么这样写 可能为了装 X 不想让我们看懂吧 哈哈~~~
大佬好眼力 --!
哈哈 可能我老大装 X 不想让人太容易看懂吧