http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4064315&pid=23763589&page=1&extra=#pid23763589

相关链接

http://bbs.chinaunix.net/thread-1326829-1-1.html

http://bbs.chinaunix.net/thread-866347-1-1.html

 

  1. 脚本如下 
  2. #!/bin/bash 
  3. function a 
  4.   for ((i=0;i<5000;i++)) 
  5.     do 
  6.       echo $i & 【为了执行效率 将这句放在后台运行  这里只是举例写成这样  (实际环境是 服务器众多 这一句是执行一个脚本备份数据库的(大概需要2分钟的时间)】 
  7. done 
  8.  
  9.  
  10. function b 
  11.   echo "b" 
  12.   echo "after function a" 
  13.  
  14.  
  15. a && b 
  16.  
  17.  
  18. 然后这样执行a && b  会出现函数a中的语句实际没有执行完 就执行了函数b中的语句 
  19. 因为这里的逻辑关系 就是我想确保a完全执行完了 再执行函数b中的内容 
  20.  
  21. ps:请教了一些朋友 说是函数a执行完后 sleep xxx秒 然后执行函数b 这样理论上是可以的 只要给一个合适的时间 但由于我的数据库随着业务也是不断增大的 
  22.  
  23.  
  24. 所以想问问有没有更好的方法来判断 a确定执行完了 再执行b 
  25.  
  26.  
  27. 解决方法 
  28. a && wait && b 
  29.  
  30. function a 
  31.   for ((i=0;i<5000;i++)) 
  32.   do 
  33.      ... 
  34.   done 
  35.   wait 
  36.   echo a done 
  37. 这样执行起来就可以确保函数a 完全执行完了再执行函数b