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

我有一个文件,我想要扫描它,find字符“{”并创build一个新行,然后添加一个IP在新行,并添加一个半科隆到行的末尾,然后写入configuration文件。

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

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

在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命令写testingconfiguration文件的基本回声,它工作正常。

我也尝试了'shelljs'模块没有运气那里。 我已经尝试了几个小时的无数组合现在没有盛行! 我感到困惑。

我认为你需要逃避\\n 。 现在,它被parsing为命令中的文字换行符,这已经搞乱了。