我有一个bash脚本,我想做这样的事情:
_command="zcat database.sql.gz | mysql database"
eval "($_command) & echo $!"
我想从bash脚本在后台运行一个命令(存储在变量中),然后为该应用程序返回正确的pid
。
如上所述,它当前返回bash脚本的pid
而不是......
有人知道如何使这项工作吗?
编辑:
如果我这样说的话;如果你想这样做,你会怎么做?
我真正想做的就是写下这个:
($ _ command)&回声$! - 但后来我得到一个错误,说明gzip不理解命令“-u”,不知何故gzip认为mysql命令属于它。奇怪。
答案 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
感谢所有好心人花时间尝试帮助我! :)