我通過調用寫一個Ruby腳本,打印:CUPS的lp返回什麼?
`/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}`
我想優雅地處理印刷錯誤,但無法確定是什麼lp
回報,當我執行它。通常它是像這樣的字符串:
請求ID是PrinterQueue-68(1個文件(S))
是否有任何地方,描述了lp
應在陌生的情況下返回?
謝謝!
我通過調用寫一個Ruby腳本,打印:CUPS的lp返回什麼?
`/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}`
我想優雅地處理印刷錯誤,但無法確定是什麼lp
回報,當我執行它。通常它是像這樣的字符串:
請求ID是PrinterQueue-68(1個文件(S))
是否有任何地方,描述了lp
應在陌生的情況下返回?
謝謝!
請允許我詳細說明我的評論。
你應該忘記使用反引號,並直接去Open3
。特別是,Open3.capture3
:
out, err, status = Open3.capture3("/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}")
然後out
將是包含從lp
標準輸出一個字符串,err
將含有標準錯誤的字符串,並status
將是一個Process::Status
實例。您檢查status.success?
以查看lp
命令是否正常工作,如果不起作用,則查看err
(或向用戶顯示err
)。
字符串request id is PrinterQueue-68 (1 file(s))
是什麼lp
命令打印,沒有什麼回報。
如果lp
命令失敗,它將返回一個非零的退出狀態。 (它也應該打印一條錯誤消息,但是這些消息不一定記錄在案,並且可能會從一個版本更改爲下一個版本。)
據我所知,可以在使用反引號調用一個命令後查詢$?
的值。如果命令成功,則$?
應該爲0.如果失敗,它將具有一些非零值。
在評論中,@ muistooshort建議使用open3
;這可能比使用反引號更強大和更靈活。
您是否檢查過手冊頁? –
根本不討論返回值:( – Jay
'open3'可能比反引號更好,這樣你就可以獲得標準輸出,標準錯誤和返回值(如果有的話,它應該是非零的錯誤)。 –