我想在后台和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阻止了不同的行为。
答案 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