Chinaunix

标题: 如何确定执行完函数a 再执行函数b [打印本页]

作者: linuxforlive    时间: 2013-01-17 15:24
标题: 如何确定执行完函数a 再执行函数b
脚本如下
#!/bin/bash
function a
{
  for ((i=0;i<5000;i++))
    do
      echo $i & 【为了执行效率 将这句放在后台运行  这里只是举例写成这样  (实际环境是 服务器众多 这一句是执行一个脚本备份数据库的(大概需要2分钟的时间)】
done
}


function b
{
  echo "b"
  echo "after function a"

}

a && b


然后这样执行a && b  会出现函数a中的语句实际没有执行完 就执行了函数b中的语句
因为这里的逻辑关系 就是我想确保a完全执行完了 再执行函数b中的内容

ps:请教了一些朋友 说是函数a执行完后 sleep xxx秒 然后执行函数b 这样理论上是可以的 只要给一个合适的时间 但由于我的数据库随着业务也是不断增大的


所以想问问有没有更好的方法来判断 a确定执行完了 再执行b
作者: jils2013    时间: 2013-01-17 16:31
考虑可以把函数里的& 移到外面来,a && b &--未验证,写法不确定
作者: bio_tt    时间: 2013-01-17 22:59
a && wait && b , 可以不?
作者: jason680    时间: 2013-01-18 11:44
回复 1# linuxforlive

How about this way

function a
{
  for ((i=0;i<5000;i++))
  do
     ...
  done
  wait
  echo a done

}

作者: linuxforlive    时间: 2013-01-18 13:56
回复 3# bio_tt


    可以    谢谢哈 也查了一些资料 http://bbs.chinaunix.net/thread-866347-1-1.html 是不是想这上面所说的?
作者: linuxforlive    时间: 2013-01-18 13:58
回复 4# jason680


      谢谢  再给点wait的详细说明吧  http://bbs.chinaunix.net/thread-1326829-1-1.html
作者: seesea2517    时间: 2013-01-18 14:21
我觉得 2 楼的就行嘛。
作者: bio_tt    时间: 2013-01-18 16:40
回复 5# linuxforlive

就是等子进程全部结束,然后才往下走

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2