2016/8/14追加:下面有个同学追加了一个评论,对这个命令的用法有疑问。这里的例子不够好,重新写一下。

在 Bash 脚本里后台执行命令,如果要等待执行结束可以使用 wait 命令。

示例:(这里有三个脚本,test.sh / test1.sh /test2.sh)

test.sh 

#!/bin/bash

./test1.sh &
./test2.sh &
echo "sleep done"
#!/bin/bash


sleep 3
echo "test1"
#!/bin/bash


sleep 3
echo "test2"




这时直接输出 sleep done 后再输出了 test1, test2

为了保证test1.sh以及test2.sh的命令能先执行完再往下面执行,追加一个wait内置命令。

#!/bin/bash
./test1.sh &
./test2.sh &

wait
echo "sleep done"



这时会等待 test1.sh 和 test2.sh 结束后输出 sleep done。

主要使用场景,在多CPU的环境里执行任务时可以启动几个命令后台并发执行以加快执行速度,在执行完后退出。

参考:

       wait [n]              等待指定的进程,返回它的终止状态。 n 可以是进程 ID 或一个作业号;如果给出的是作业号,将等待作业的管道中所有进程。如果没有给出 n,将等待所有当前处于激活状态的子进程,返回状态是 0。如果 n 指定了不存在的进程或作业,返回状态是 127。否则,返回状态是所等待的最后一个进程或作业的退出状态。

http://qiita.com/geta6/items/199faca823e84026c10a


./test1.sh &
./test2.sh &