0

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

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

eval "($_command) & echo $!"

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

如上所述,它当前返回pidbash 脚本的...

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

编辑:

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

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

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

4

3 回答 3

1
eval "($_command) & echo $!"

$!在运行之前 正在扩展eval。尝试转义它,例如"\$!"or '$!'

于 2012-08-10T16:36:48.347 回答
0

这就是我想出的实际可行的方法:

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

    function run {

            $1="($1)"

            `eval $_command` & echo $!
    }   

    run $_command

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

于 2012-08-12T11:57:33.743 回答
0

你试过这个吗?

eval "($_command) & echo $$"
于 2012-08-10T16:03:19.297 回答