我有一個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