#!/bin/bash
echo start to sleep
sleep 10 &
sleep 5 &
wait
echo "all is ending"
在主线程中,wait只有当10s的睡眠完毕后,才会“all is ending”
输出:
start to sleep
all is ending // 这句话10s后才会打印
#!/bin/bash
fun(){
echo "fun is begin.timeNum:$1"
local timeNum=$1 # local表明timeNum是一个方法内的局部变量
sleep $timeNum & # 注意:此处是后台执行
wait #这个只等待wait前面sleep
echo "fun is end.timeNum:$timeNum"
}
fun 10 &
fun 5 &
wait #如果fun里面没有wait,则整个脚本立刻退出,不会等待fun里面的sleep
echo "all is ending"
输出:
fun is begin.timeNum:10
fun is begin.timeNum:5
fun is end.timeNum:5
fun is end.timeNum:10
all is ending // 这句话等最后一个“fun is end.timeNum:10”打印完毕后才会输出
ps:要是去掉func()里面的wait,则立即打印“all is ending”,不等待