Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Javascript nodejs';执行官';命令不';t执行';sed';指挥得当_Javascript_Node.js_Sed_Exec - Fatal编程技术网

Javascript nodejs';执行官';命令不';t执行';sed';指挥得当

Javascript nodejs';执行官';命令不';t执行';sed';指挥得当,javascript,node.js,sed,exec,Javascript,Node.js,Sed,Exec,我有一个文件,我想扫描它,找到字符“{”,并创建一个新行,然后在新行上添加一个IP,在行尾添加一个分色剂,然后写入一个配置文件 从shell运行时,我可以使用以下sed命令完成此操作: sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf inside test.conf: acl testACL{ }; shell中命令的输出显示: acl testACL{ 1.1.1.1; }; 工作完美!现在的问题是当我让nodejs执行它时:

我有一个文件,我想扫描它,找到字符“{”,并创建一个新行,然后在新行上添加一个IP,在行尾添加一个分色剂,然后写入一个配置文件

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

sed -i 's/{/&\n1.1.1.1;/g' /tmp/test.conf
inside test.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命令向测试配置文件写入了基本的回音,它工作得很好


我还尝试了“shelljs”模块,但没有成功。我已经尝试了数小时的组合,但都没有成功!我感到困惑。

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