[英]Running Bash Script in Java
因此,從本質上講,我試圖運行命令“ / dir / command -arg”來更改Java中USB設備上的LED顏色。 我正在使用Ubuntu 10.04。 當我從終端運行命令時,它工作正常。
但是,我嘗試了我可以找到的Runtime.exec()的每個迭代,但它們似乎都不起作用。 然后,我創建了一個包含以下內容的腳本:
#!/bin/bash
echo "hello"
/dir/command -arg
當我從終端運行此程序時,它工作正常。 但是當我跑步時
@Override
public void run() {
String[] lookupCmd = {"/bin/sh","-c", "sh /dir/script.sh"};
try {
Runtime runtime = Runtime.getRuntime();
Process lookupProc = runtime.exec(lookupCmd);
lookupProc.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(lookupProc.getInputStream()));
String line = reader.readLine();
while (line != null) {
id.add(line);
System.out.println(line);
line = reader.readLine();
}
} catch (Exception e) {
System.err.println(e);
}
}
“你好”打印,但沒有其他內容。 沒有錯誤。
我的其他命令不應產生任何輸出,而只需更改LED的顏色。 但是,當我使用相同的命令但使用不同的arg來運行輸出時,它仍然僅顯示“ hello”。
我還確保我的用戶具有USB設備對/ dev文件夾的權限。
我沒有運行錯誤流,所以我添加了它。
之后,我意識到我缺少一個環境變量,因此添加了:
String[] envar = {"VAR=path"}
並稱為:
runtime.exec(lookupCmd, envar);
現在效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.