1

現在実行しているこのスクリプトは、1 つを除くすべてのインスタンスでうまく機能します。

 #!/bin/sh
 pdfopt test.pdf test.opt.pdf &>/dev/null
 pdf2swf test.opt.pdf test.swf
 [ "$?" -ne 0 ] && exit 2

上記のコードの後に​​実行する行を追加します...

pdf2swf test.pdf test.swf" " が失敗した場合に " "を実行するようにこのスクリプトを変更するにはどうすればよいpdf2swf test.opt.pdf test.swfですか? 2 回目の試行が失敗した場合、私は " exit 2" します。

ありがとう

4

3 に答える 3

5

「OR」を短絡すると、必要なことが行われます。

pdf2swf test.opt.pdf test.swf || pdf2swf test.pdf test.swf
于 2010-04-16T14:11:27.440 に答える
1

シェル スクリプトの代わりに Makefile が必要な場合もあります。コマンドの 1 つが失敗すると、makefile は自動的に中止します。[ "$?" -ne 0 ] && exit 2または、すべてのコマンドの後に追加することもできます

于 2010-04-16T14:07:45.890 に答える
1

試す:

/path/to/pdfopt test.pdf test.opt.pdf >/dev/null && {

    pdf2swf test.opt.pdf test.swf
    ... maybe do more stuff here, in the future ...
    exit_here_nicely
} 

code_that_is_reached_if_pdfopt_failed

あなたの例では:

pdfopt test.pdf test.opt.pdf &>/dev/null

...pdfoptバックグラウンドで実行されるため、完了するまでにかかる時間はわかりません。ブロックして、括弧内のコードが機能した場合にのみ到達するようにします。

バックグラウンドで簡単に起動できる関数ラッピングですが、最初のコマンドが期待どおりに終了するまで各プロセスがブロックされます。

于 2010-04-16T14:19:47.503 に答える