如何使用bash在后台执行命令?

时间:2012-07-27 17:07:58

标签: bash background parallel-processing

我想在后台和bash中执行一组可选命令。像这样的东西

#!/bin/bash
BGR=""
if [ foo ] ; then
   BGR=\&
fi
cmd1 $BGR
cmd2 $BGR
cmd3 $BGR
wait

但这对bash来说似乎不太可能。如果foo为真,则命令评估为

+ cmd1 '&'
+ cmd2 '&'
+ cmd3 '&'

所以&只是另一个论点。

还有其他方法可以实现吗?除了代码重复之外,我写if if / then / else阻止了不同的行为。

2 个答案:

答案 0 :(得分:3)

您可以将if-else子句移动到函数中以避免代码重复,例如:

function execute() {
    if [[ -n "$BGR" ]]; then
        "$@" &
    else
        "$@"
    fi
}

execute cmd1 arg1
execute cmd2 arg2

答案 1 :(得分:2)

eval cmd1 $BGR
eval cmd2 $BGR
eval cmd3 $BGR
wait