Bash脚本中如何等待inner.sh执行完成后再运行curl命令?
最优解决方案:让脚本等待inner.sh执行完成再运行curl
你完全不需要用sleep命令——bash脚本里的命令默认是串行执行的,也就是说,只有当前面的命令(这里就是./inner.sh)执行完毕并退出后,才会继续执行下一条命令。
用sleep的问题在于:如果inner.sh运行时间超过30秒,那curl会提前执行,不符合你的需求;如果inner.sh很快就跑完,那sleep会白白浪费时间,完全没必要。
修正后的脚本直接去掉sleep即可,另外注意curl的写法有问题,GET需要用-X参数指定(或者如果是GET请求,其实可以直接省略GET,因为curl默认就是GET方法):
./inner.sh # 修正curl的写法:添加-X指定请求方法,或者直接去掉GET curl -X GET 'http://localhost:9092/OTHER/core/other/htmlreport'
如果出于某些原因你需要把inner.sh放到后台运行(比如./inner.sh &),那可以用wait命令来等待它完成,写法如下:
./inner.sh & wait # 等待后台的inner.sh进程执行完毕 curl -X GET 'http://localhost:9092/OTHER/core/other/htmlreport'
但根据你的原始脚本,inner.sh是前台运行的,所以第一种写法就完全满足需求,既可靠又高效。
内容的提问来源于stack exchange,提问作者boycod3
相关产品推荐
相关产品推荐

