shell脚本中等待上一条命令执行结束在执行下一条。

 

首先了解下背景知识。

命令生效顺序

Linux系统下命令生效的顺序有以下4条:

  1. 绝对路径或相对执行的命令;

  2. 别名;

  3. Bash的内部命令;

  4. 按照$PATH环境变量定义的目录查找顺序搜到的第一个命令。

实际shell脚本编写过程中,总会有这么一个场景,

 

#!/bin/bash
file=command1
command2 $file
​

下一条命令command2执行所需要的参数或者需要涉及的文件,是由上一条命令command1执行的结果产生的。

而command执行需要的时间可能要1分钟,但是个人实践之后认为shell脚本中的命令都是顺序执行的

这时候就需要我们等待着command1执行完在执行command2。

  • 1 &&

shell1 && shell2 && shell3
  • 2 若有for循环 在循环体之后使用wait sleep

#!/bin/bash
​
  source ~/.bashrc
​
  fun(){
​
  echo "fun is begin.timeNum:$timeNum"
​
  local timeNum=$1
​
  sleep $timeNum &
​
 
​
  wait #这个只等待wait前面sleep
​
  echo "fun is end.timeNum:$timeNum"
​
  }
  • 3

#!/bin/sh
command 1
output=`command 2`
command 3
  • 4

#!/bin/bash
for ((i=0;i<5;i++))
do
sleep 3;echo a
done
​
#运行需要15秒。
​
​
#!/bin/bash
for ((i=0;i<5;i++))
do
{
sleep 3;echo a
} &
done
wait
​
#打开5个子进程并行,运行只需要3秒。

 

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值