java - sed 不在 java 程序中工作,但输入行在终端中工作

标签 java linux sed

当我输入行时:

sed -i 's/DNS1="8.8.8.8"/DNS1="8.8.4.4"/' /etc/sysconfig/network-scripts/ifcfg-eth0

我得到了想要的结果(即 8.8.8.8 替换为 8.8.4.4),但是,我有一个 jave 程序传递了与此处所示相同的命令:

public static void swapDns() throws IOException, InterruptedException 
{
    Runtime rt = Runtime.getRuntime();
    Process ps;

    String cmd[] = {"sed","-i","'s/DNS1=\"8.8.8.8\"/DNS1=\"8.8.4.4\"/'","/etc/sysconfig/network-scripts/ifcfg-eth0"};
    ps = rt.exec(cmd);
} 

而且它不起作用。它不会改变任何东西。 sed/java 有问题,还是我遗漏了什么...

最佳答案

Java 程序是否可能在不同的环境下运行,也许 sed 不在路径中?否则它可能以没有网络脚本写入权限的用户身份运行?

关于java - sed 不在 java 程序中工作,但输入行在终端中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003749/

相关文章:

java - 即使出现异常,flyway 还能继续执行脚本吗?

php - UTF-8贯穿始终

linux - Linux 平台上微 Controller 的 GUI 库

linux - 并行运行 sed

linux - sed 命令字符串变量在单引号内串联

使用 Process.waitFor() 和 java.lang.InterruptedException 的 java 多线程

java - 方法返回后做一些事情

java - request.getInputStream不显示真正的字符串内容

linux - "No such file or directory"在 bash 的 while 读取循环中使用 cut

bash - 在 Bash 中提取单词后的字符串文本