我有一个 shell 脚本,它有一个命令在成功创建脚本后生成一个包含所需信息的文件。
现在,当我直接执行该命令或从 cmd 行执行脚本本身时,将生成文件。
但是,当我尝试使用Runtime.getRuntime().exec(cmd)
该文件从 java 代码执行相同的脚本时,没有生成。此行之前和之后的跟踪按预期显示,表明脚本的执行没有引发任何异常。
我哪里错了或者我错过了什么?请帮忙!!!
示例这是我试图执行的代码
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);
}
}
}
我得到的输出是这个
java Scripttest
Exception isjava.io.IOException: Cannot run program "ls|grep": error=2, No such file or directory
该 cmd 没有被执行,但不确定为什么它没有被执行。