Bash:使用选项在后台运行多个命令

Bash:使用选项在后台运行多个命令,bash,Bash,我的理解是,在Bash中,您可以在后台运行多个命令,如下所示: $ (cmd1; cmd2) & 但假设我想将选项传递给这两个命令。这会导致将用于cmd2的选项传递给cmd1的问题 $ (cmd1 --A; cmd2 --b) & Error: cmd1 has no option "b". 有什么想法吗?首先,我不同意你的看法。我创建了两个shell脚本,cmd1和cmd2,内容如下: #!/bin/bash for arg in $* ; do echo "$0:

我的理解是,在Bash中,您可以在后台运行多个命令,如下所示:

$ (cmd1; cmd2) &
但假设我想将选项传递给这两个命令。这会导致将用于cmd2的选项传递给cmd1的问题

$ (cmd1 --A; cmd2 --b) &
Error: cmd1 has no option "b".

有什么想法吗?

首先,我不同意你的看法。我创建了两个shell脚本,
cmd1
cmd2
,内容如下:

#!/bin/bash
for arg in $* ; do
    echo "$0: $arg"
done
而且:

ljm@ronsard:~/tmp$ (./cmd1 --A; ./cmd2 --b) &
[2] 23984
ljm@ronsard:~/tmp$ ./cmd1: --A
./cmd2: --b

[2]+  Done                    ( ./cmd1 --A; ./cmd2 --b )
因此,您可以看到参数被传递给了正确的命令


问题可能出在您的
cmd2
中,它错误地告诉您它的名称是
cmd1
。请尝试
cmd2--b
来验证这一点。

这对我来说是正常的。您是否正在执行其他操作,例如尝试将命令存储在变量中?哪些命令是cmd1和cmd2?看起来问题在于参数,而不是配方(cmd1;cmd2)&