nodejs'exec'命令不't执行'sed'命令正确

nodejs 'exec' command doesn't execute 'sed' command properly

本文关键字:命令 sed 执行 nodejs exec      更新时间:2023-09-28

我有一个文件,我想在其中扫描它,找到字符"{"并创建一个新行,然后在新行上添加一个IP并在行尾添加一个半古龙水,然后写入一个配置文件。

当从shell运行时,我可以使用以下sed命令来实现这一点:

sed -i 's/{/&'n1.1.1.1;/g' /tmp/test.conf

内部测试conf:

acl testACL{
};

shell中命令的输出显示:

acl testACL{
1.1.1.1;
};

工作完美!现在的问题是当我让nodejs执行它时:

        var sys = require('sys');
        var exec = require('child_process').exec;
        function puts(error, stdout, stderr) { sys.puts(stdout) };
        exec("sed -i 's/{/&'n1.1.1.1;/g' /tmp/test.conf",puts);
        return 0;

当我在控制台中运行命令时:'nodejs-test.js'

我得到了空白输出,当我检查文件时,文件"test.conf"没有被更改!为什么?

如果你认为"这是权限问题!"我让nodejs-exec命令将基本的echos写入测试配置文件,它运行得很好。

我也尝试过"shelljs"模块,但没有成功。我已经尝试了无数个小时的组合,但都没有成功!我很困惑。

我认为您需要将'n作为''n进行转义。现在,它被解析为命令中的一个文本换行符,这把它搞砸了。