Bash shell内置wait命令简介

前端之家收集整理的这篇文章主要介绍了Bash shell内置wait命令简介前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:http://nanxiao.me/bash-shell-wait/


Bash shell内置了wait命令,官方文档对wait解释如下:

wait

     wait [-n] [jobspec or pid …]

Wait until the child process specified by each process ID pid or job specification jobspec exits and return the exit status of the last command waited for. If a job spec is given,all processes in the job are waited for. If no arguments are given,all currently active child processes are waited for,and the return status is zero. If the -n option is supplied,wait waits for any job to terminate and returns its exit status. If neither jobspec nor pid specifies an active child process of the shell,the return status is 127.

wait命令可以使当前shell进程挂起,等待所指定的由当前shell产生的子进程退出后,wait命令才返回。wait命令的参数可以是进程ID或是job specification。举例如下:

root# sleep 10 &
[3] 876
root# wait 876
[3]+  Done                    sleep 10
root# sleep 20 &
[1] 877
root# wait %1
[1]+  Done                    sleep 20

wait命令一个很重要用途就是在Bash shell的并行编程中,可以在Bash shell脚本中启动多个后台进程(使用&),然后调用wait命令,等待所有后台进程都运行完毕,Bash shell脚本再继续向下执行。像下面这样:

command1 &
command2 &
wait

Bash shell还有一个内置变量:$!,用来记录最后一个被创建的后台进程。

root# sleep 20 &
[1] 874
root# sleep 10 &
[2] 875
root# echo $!
875

echo $!输出结果是875,是第二个执行的sleep命令。

参考资料:
Does bash script wait for one process to finish before executing another?

原文链接:https://www.f2er.com/bash/388982.html

猜你在找的Bash相关文章