1

次の呼び出しで出力する Ruby スクリプトを作成しています。

`/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}`

印刷エラーを適切に処理したいのですが、lp実行時に何が返されるかを判断できません。通常は次のような文字列です。

リクエスト ID は PrinterQueue-68 (1 ファイル)

lp奇妙な場合に何が返されるべきかを説明している場所はありますか?

ありがとう!

4

2 に答える 2

2

私のコメントについて少し詳しく説明させてください。

これにバックティックを使用することを忘れて、直接に進んでOpen3ください。特に、Open3.capture3

out, err, status = Open3.capture3("/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}")

次に、outからの標準出力を含む文字列になり、標準エラーを含む文字列になり、インスタンスになります。コマンドが機能したかどうかを確認し、機能しなかったかどうかを確認します(またはユーザーに表示します)。lperrstatusProcess::Statusstatus.success?lperrerr

于 2011-11-11T06:32:56.223 に答える
0

文字列request id is PrinterQueue-68 (1 file(s))は、コマンドが返すものではなく、lpコマンドが出力するものです。

コマンドが失敗すると、lpゼロ以外の終了ステータスが返されます。(エラーメッセージも出力するはずですが、これらのメッセージは必ずしも文書化されているわけではなく、バージョンごとに変わる可能性があります。)

$?私が理解しているように、バッククォートを使用してコマンドを呼び出した後の値を照会できます。コマンドが成功した場合は$?0である必要があります。失敗した場合は、ゼロ以外の値になります。

コメントでは、@muistooshortはopen3;の使用を提案しています。これは、バックティックを使用するよりもおそらく堅牢で柔軟性があります。

于 2011-11-11T06:31:30.857 に答える