在Java中运行Bash脚本

时间:2012-08-14 15:17:08

标签: java ubuntu terminal usb

基本上,我试图运行命令“/ dir / command -arg”来改变Java设备上的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文件夹的权限。

1 个答案:

答案 0 :(得分:0)

我没有运行错误流,所以我添加了。

之后我意识到我错过了一个环境变量,所以补充说:

String[] envar = {"VAR=path"}

并致电:

runtime.exec(lookupCmd, envar);

现在很棒。