执行命令(来自变量),然后显示正确的pid?

时间:2012-08-10 15:41:35

标签: linux bash unix

我有一个bash脚本,我想做这样的事情:

_command="zcat database.sql.gz | mysql database"

eval "($_command) & echo $!"

我想从bash脚本在后台运行一个命令(存储在变量中),然后为该应用程序返回正确的pid

如上所述,它当前返回bash脚本的pid而不是......

有人知道如何使这项工作吗?

编辑:

如果我这样说的话;如果你想这样做,你会怎么做?

我真正想做的就是写下这个:

($ _ command)&回声$! - 但后来我得到一个错误,说明gzip不理解命令“-u”,不知何故gzip认为mysql命令属于它。奇怪。

3 个答案:

答案 0 :(得分:1)

eval "($_command) & echo $!"
$!运行之前

eval正在扩展。尝试逃避它,例如"\$!"'$!'

答案 1 :(得分:0)

你试过这个吗?

eval "($_command) & echo $$"

答案 2 :(得分:0)

这就是我提出的实际工作:

    _command="zcat dump.sql.gz | mysql database"

    function run {

            $1="($1)"

            `eval $_command` & echo $!
    }   

    run $_command

感谢所有好心人花时间尝试帮助我! :)