Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中执行没有输出的命令行bash命令不像_Java_Command Line_Execution - Fatal编程技术网

在java中执行没有输出的命令行bash命令不像

在java中执行没有输出的命令行bash命令不像,java,command-line,execution,Java,Command Line,Execution,使用此代码: private String executeCommand(String cmd ) { Process p; try { p = Runtime.getRuntime().exec(cmd); BufferedReader br = new BufferedReader( new InputStreamReader(p.getInputStream())); while ((comm

使用此代码:

   private String executeCommand(String cmd ) {

    Process p;
    try {
        p = Runtime.getRuntime().exec(cmd);
        BufferedReader br = new BufferedReader(
            new InputStreamReader(p.getInputStream()));

        while ((commandlineOutput = br.readLine()) != null){
                System.out.println("line:" + commandlineOutput);
             }
        p.waitFor();
                System.out.println (p.exitValue());

        p.destroy();
    } catch (Exception e) {}

  }
return commandlineOutput;
}
我遇到了以下问题:所有生成某些输出的命令都正常执行,但一些不生成输出的命令不执行 例如:rm*.jpg不工作,但mkdir工作,我看不出有什么区别

我是一个新手,谷歌搜索了很长一段时间,但这个问题从未被提及 请帮帮我
谢谢

如果出现错误,它将转到ErrorStream,您还需要附加该错误:

BufferedReader bre = new BufferedReader
        (new InputStreamReader(p.getErrorStream()));

在linux上运行
rm*
时,shell解释并处理
*
。在Java中,同一个shell没有运行,因此
*
不会被解释为通配符

如前所述,尝试从
cmd
输入中提取目标/工作目录,并执行以下操作:

File[] files = new File(<directory>).listFiles();
for(File file : files){
  if(file.getAbsolutePath().endsWith(".jpg")){
      //perform delete
  }
}

运行
rm*.jpg
,您希望得到什么样的输出?您是否检查了该命令是否正在运行?rm*.jpg从命令行使用时,不会向用户生成反馈,它只会删除当前目录中的所有jpg文件。当将java程序生成的命令复制粘贴到命令行时,该命令正常工作。rm*.jpg的出口输出为1,mkdir somedir的出口代码为0@allard查看这篇相关帖子:正如我所说,我是个新手,但我看到了一些曙光,这是关于*,我说的对吗?**好的,我解决了…**字符串[]cmds={“bash”,“-c”,cmd};ProcessBuilder probuilder=新的ProcessBuilder(cmds);executeCommand(“rm”+FieldGraphicsDir.getText()+“/”+“*.jpg”);是否将命令馈送到executeCommand方法中
String[] command = new String[] {"rm", "*.jpg"}
p = Runtime.getRuntime().exec(command);