java - 从 Java 运行 Linux 命令

标签 java linux

我正在尝试从 java 运行命令。但是命令没有执行。谁能指出原因?

 String path = dest+"/info_updated.csv";
     File file = new File(path);
    String command = "sed -i '/" + subscriberId + "/d' "+file;
    System.out.println("command "+command);

       Runtime run = Runtime.getRuntime();

          Process p = null;
          try {
            p = run.exec(command);

            InputStream errorStream = p.getErrorStream();
            p.waitFor();

          } catch (IOException ioe) {
            ioe.printStackTrace();
            System.out.println("ERROR.RUNNING.CMD");
          } catch (Exception e) {
            e.printStackTrace();
          } finally {
            p.destroy();
          }
          return true;
  }

在日志中它正确地打印了命令。

command sed -i '/L13876110226750000/d' /usr/share/apache-tomcat-6.0.37/webapps/SMS/info_updated.csv

但是没有执行。

最佳答案

你可以在命令前加上/bin/sh -c试试看。

像这样:

String[] command = {"/bin/sh", "-c", "sed -i '/" + subscriberId + "/d' "+file};
Process p = run.exec(command);

关于java - 从 Java 运行 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705689/

相关文章:

java - 在初始化时设置通用参数 - 在子类中

java - Java 中二维数组创建的维度似乎是倒退的

c - gcc -march= native 。检测为错误架构构建的二进制文件的方法?

linux - 删除不在 repo 中的 git LFS 文件

linux - 创建 CentOS 7 KVM guest 时出现问题

java - 在java中实现我自己的Map API,如何抛出IllegalArgumentException?

java - 如何使用 Junit 测试在数据库中插入记录的 void 方法?

javascript - 通过 Java JAX-RS REST 服务发送带有 JS 的 HTML

java - Linux平台下用SuperCSV写CSV文件

c++ - 如何使用 exec() 在 C++ 和 Linux 中执行命令?