2016-10-04 72 views
0

想使用Open3的popen3函數在ruby上運行系統命令。它會是這樣的:Ruby - Open3 popen3函數消毒

pdf2htmlEX --zoom 1.3 ~/test.pdf 

由於文件名將通過params傳遞,我想清理它。如果運行,例如:

Open3.popen3("pdf2htmlEX --zoom 1.3 ~/test.pdf") do |stdin, stdout, stderr, wait_thr| 

end 

的代碼工作正常,但是當我嘗試分離參數(如功能表明,這樣它會被轉義),這樣的:

Open3.popen3("pdf2htmlEX --zoom 1.3", "~/test.pdf") do |stdin, stdout, stderr, wait_thr| 

end 

它給我的錯誤:沒有這樣的文件或目錄 - pdf2htmlEX - zoom 1.3

沒有人知道我如何解決它?謝謝!

回答

1

參數需要與命令分開。嘗試

Open3.popen3("pdf2htmlEX", "--zoom", "1.3", "~/test.pdf")...

+0

謝謝,這避免了錯誤! =) –

+0

但現在我得到了無法識別的選項「--zoom 1.3」的錯誤。刪除它,然後,「I/O錯誤:無法打開文件'〜/ test.pdf':沒有這樣的文件或目錄。」,甚至文件存在(如果我將整個命令作爲唯一串)。有任何想法嗎? –

+0

與絕對路徑,工作......但仍然得到錯誤om放大參數 –