无法使用java在Cygwin中运行Shell脚本

时间:2011-12-01 19:25:37

标签: java cygwin

我正在尝试使用Java Application运行Shell脚本。我正在使用Process builder。

  {
            String cmd;
            cmd = "D:/cygwin/bin/bash -c '/bin/app.sh 121 121 1212 12121'";
            System.out.println("EXECING: " + cmd);
            p = Runtime.getRuntime().exec(cmd);

            in = p.getInputStream();
            br = new BufferedReader(new InputStreamReader(in));
            System.out.println("OUT:");
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            in = p.getErrorStream();
            br = new BufferedReader(new InputStreamReader(in));
            System.out.println("ERR:");
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            System.out.println();
        }

当我使用简单的shell脚本时,此代码可以正常工作。

#!/bin/bash
# Call this script with at least 3 parameters, for example
# sh scriptname 1 2 3 4
echo "first parameter is $1"
echo "Second parameter is $2"
echo "Third parameter is $3"
echo "Third parameter is $4"
exit 0

可以任何人建议我可以打开Cygwin,然后参数到shell脚本 becoz。我的另一个Shell脚本在显示错误消息的同一位置不起作用。

app.sh: line 57: lib/renameapp.sh: No such file or directory
app.sh: line 226: clear: command not found
app.sh: line 69: grep: command not found
app.sh: line 69: cut: command not found
app.sh: line 74: grep: command not found

任何人都可以建议我如何使用java打开Cygwin终端并使用java运行shell脚本。

提前致谢...

2 个答案:

答案 0 :(得分:0)

您应该正确设置%PATH环境变量,或者在shell脚本中使用绝对路径。

答案 1 :(得分:0)

PATH变量未按预期设置 - 可能是从Java启动进程时环境丢失,或者Cygwin没有执行正常的PATH魔法,因为它不是&# 39; ta登录shell,我不确定。无论哪种方式,只需将export PATH="$PATH:/bin:/usr/bin:/usr/local/bin"添加到脚本的顶部,它几乎肯定会再次运行。