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

您所在的位置:网站首页 shell脚本不等待上一条命令结果直接执行下一条 shell脚本中等待上一条命令执行结束在执行下一条

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

#shell脚本中等待上一条命令执行结束在执行下一条| 来源: 网络整理| 查看: 265

参考地址:

https://blog.csdn.net/tiwoo/article/details/51094913

在开发中,我们有时候需要使用 Shell 脚本完成一些简单的操作,但是往往有的操作比较耗时,但是我们又不得不等待它执行完成后才能进行下面的步骤,所以许多朋友往往使用sleep等方法来强制等待操作完成,其实完全没有必要,我们只需要使用一个小小的 tricky 方法就可以实现精准等待操作完成的效果。

Shell 默认提供了获取命令执行输出的方法,即用 ` 号将需要获取输出的操作括起来,并赋值给一个变量,则 Shell 会在等待命令执行完成后把输出内容用于赋值,所以,这就是实现了我们需要的等待效果,并且时间精准性很高。

假设command 1执行需要1s,command 2执行需要视当前资源占用率花费10s~30s不等,command 3执行需要1s,则实现的代码如下:#!/bin/sh

command 1

output=`command 2`

command 3

 

 

 参考地址:https://blog.csdn.net/attack_city_lion/article/details/102616729?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-102616729-blog-51094913.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-102616729-blog-51094913.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=1

首先了解下背景知识。

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

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

别名;

Bash的内部命令;

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

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

 

#!/bin/bashfile=command1command2 $file​下一条命令command2执行所需要的参数或者需要涉及的文件,是由上一条命令command1执行的结果产生的。

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

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

1 &&

shell1 && shell2 && shell32 若有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/shcommand 1output=`command 2`command 34

#!/bin/bashfor ((i=0;i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3