簡體   English   中英

在Java中運行Bash腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM