我有一个shell脚本,它有一个命令,在成功创建脚本后生成一个包含所需信息的文件。无法从java运行shell脚本
现在,当Iam直接执行该命令或从cmd行执行脚本本身时,文件正在生成。
但是当iam试图从使用Runtime.getRuntime().exec(cmd)
的java代码执行相同的脚本时,文件没有被生成。在该行前后的跟踪按预期显示,表明脚本的执行没有抛出任何异常。
我在哪里错了,或者我在想什么? Plz帮助!
例如,这是代码IAM tryng执行
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Scripttest {
public static void main(String args[])
{
try{
String cmd="ls|grep sys";
Process p=Runtime.getRuntime().exec(cmd);
System.out.println("done");
final BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = input.readLine()) != null)
System.out.println("proc: " + line);
}
catch(Exception e)
{
System.out.println("Exception is"+e);
}
}
}
和输出IAM越来越是这样
java Scripttest
Exception isjava.io.IOException: Cannot run program "ls|grep": error=2, No such file or directory
是没有得到执行的CMD,但不知道生根粉的错误,为什么它不。
什么是cmd字符串? – perreal
您可以通过获取ErrorOutputStream来查看错误,看看错误是什么。 –
'cmd'的值是什么?你确定你已经逃脱了反斜杠等吗? – kjp