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为命令中的文字换行符,这已经搞乱了。