0

次のようなことをしたいbashスクリプトがあります:

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

eval "($_command) & echo $!"

バックグラウンドで (変数に格納された) コマンドを bash スクリプトから実行し、pidそのアプリケーションの正しいコマンドを返したいと考えています。

上記のように、現在、pid代わりに bash スクリプトの を返します...

誰かがこれを機能させる方法を知っていますか?

編集:

このように言えば; これをやりたいと思ったらどうしますか?

私が本当にやりたいことは、これを書くことです:

($_command) & echo $! - しかし、その後、gzip がコマンド「-u」を認識しないというエラーが表示されます。どういうわけか、gzip は mysql コマンドがそれに属していると考えています。変。

4

3 に答える 3

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

$!が実行される前 に展開されてevalいます。"\$!"または など、エスケープしてみてください'$!'

于 2012-08-10T16:36:48.347 に答える
0

これを試しましたか?

eval "($_command) & echo $$"
于 2012-08-10T16:03:19.297 に答える
0

これは私が思いついたもので、実際に機能しました:

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

    function run {

            $1="($1)"

            `eval $_command` & echo $!
    }   

    run $_command

時間を割いて私を助けてくれた素敵な人たちに感謝します!:)

于 2012-08-12T11:57:33.743 に答える