2012-07-27 35 views
0

我想在後臺和bash中執行一組命令(可選)。像這樣的東西如何在bash中隨意執行命令?

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

但是,這似乎不可能與bash。如果foo爲真,則指令評估爲

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

所以&僅僅是另一種說法。

有沒有其他辦法可以達到這個目的?除了代碼重複,我寫的if/then/else塊具有不同的行爲。

回答

3

您可以的if-else子句移動到一個功能,避免重複代碼,例如:

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

execute cmd1 arg1 
execute cmd2 arg2 
2
eval cmd1 $BGR 
eval cmd2 $BGR 
eval cmd3 $BGR 
wait