3

コマンドラインでコマンドのグループを取得し(「time」コマンドで実行できる方法と同様)、そのコマンドのグループを実行してから、返されたエラーコードに基づいて何かを実行するスクリプトを作成しようとしています。 (興味があれば、デスクトップの音声デーモンにコールバックしてコマンドをエコーバックし、失敗または成功した場合は、これを長時間実行されているビルドプロセスに使用します)

実行できるコマンドのリストがある場合は、unixtimeコマンドを使用します

> time (do_build && deploy_build)

私がこれを試してみると、私のコマンド(私はこれを呼び出しますtellme)で私は得ます

> tellme (do_build && deploy_build)
bash: syntax error near unexpected token `do_build'

まったく同じことがtimeコマンドでも正常に機能する場合でも、コマンドのグループをパラメーターとして好まないようです。

何か案は?

4

3 に答える 3

3

私はあなたが次のようなことをしなければならないと思います

tellme 'do_build && deploy_build'

そしてテルメの中

eval "$*"
于 2012-05-08T19:21:55.490 に答える
1

time実際にその(do_build && deploy_build)パラメータを実行し、それを待っています。

$ time (sleep 1; echo hello world;);
mundo

real    0m1.098s
user    0m0.030s
sys     0m0.000s

$ echo asd (sleep 1; echo hello world;);
bash: syntax error near unexpected token `('

$ (sleep 1; echo hello world;);
mundo

必要な場所でサブシェルを使用することはできません。

あなたの場合、次のようなものを使用する必要があります

$ (sleep 1; echo hello world) && tellme && echo done;
于 2012-05-08T19:22:24.280 に答える
0

できるよ

tellme "$(do_build && deploy_build)"

時間はbashに組み込まれています。時間の代わりに/usr/ bin / timeを使用すると、同じ問題が発生します。

于 2012-05-08T19:33:21.293 に答える