我正在尝试使用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脚本。
提前致谢...
答案 0 :(得分:0)
您应该正确设置%PATH
环境变量,或者在shell脚本中使用绝对路径。
答案 1 :(得分:0)
PATH
变量未按预期设置 - 可能是从Java启动进程时环境丢失,或者Cygwin没有执行正常的PATH魔法,因为它不是&# 39; ta登录shell,我不确定。无论哪种方式,只需将export PATH="$PATH:/bin:/usr/bin:/usr/local/bin"
添加到脚本的顶部,它几乎肯定会再次运行。