2016-05-01 64 views
1

我有一個shell腳本,我試圖從Java調用。 shell腳本包含:使用Java運行.sh與

cat /dev/tty.USB0 > file.txt 

在我的Java代碼,我使用:

Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh"); 

但它不工作。當我從終端運行它時,它按預期工作。

+1

可能重複[如何從java代碼運行Unix shell腳本?](http://stackoverflow.com/questions/525212/how-to-run -unix殼腳本從 - Java的代碼) –

回答

2

您不能直接執行.sh這樣的腳本,因爲它不是可執行文件。相反,您必須運行/bin/sh -c /home/myname/Scrivania/capture.sh

1

首先,在Java代碼中使用基於OS的功能並不是一種好的風格。相反,我建議你只使用系統輸入/輸出流。例如,如果你的程序應該處理腳本的輸出,你可以這樣做:

cat /dev/tty.USB0 > java YourMainClass 

,然後用System.in直接合作。

即使您的程序比腳本輸出消費者更復雜,您可以重寫它以從程序中刪除所有基於操作系統的部分,它會使您的代碼更加穩定和可維護。

0

你在做什麼工作。那麼,它應該。

我對什麼是/看起來錯誤的猜測是:你可能在錯誤的地方尋找輸出文件「file.txt」。

這裏有一個小實驗

System.out.println("Output file - " + new File("file.txt")); 
Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh"); 

第一行會告訴你到哪裏尋找你的文件。

P.S.當然,請記得導入java.io.File :)