nodejs“exec”命令无法正确执行“sed”命令

RCG*_*RCG 2 javascript sed exec node.js

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

从 shell 运行时,我可以使用以下 sed 命令来完成此操作:

sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf
Run Code Online (Sandbox Code Playgroud)

在 test.conf 内:

acl testACL{
};
Run Code Online (Sandbox Code Playgroud)

shell 中命令的输出显示:

acl testACL{
1.1.1.1;
};
Run Code Online (Sandbox Code Playgroud)

完美!现在的问题是当我让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;
Run Code Online (Sandbox Code Playgroud)

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

我得到空白输出,当我检查文件时,文件“test.conf”尚未更改!为什么?!

另外,如果您认为“这是权限问题!” 我已经让 nodejs exec 命令将基本回显写入测试配置文件,并且工作正常。

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

Sci*_*ter 5

我认为你需要逃避你的\nas \\n。现在,它被解析为命令中的文字换行符,这把它弄乱了。