nodejs 'exec' 命令没有正确执行 'sed' 命令
nodejs 'exec' command doesn't execute 'sed' command properly
我有一个文件我想扫描它,找到字符'{'并创建一个新行,然后在新行上添加一个IP并在该行的末尾添加一个半古龙水,然后写入配置文件。
当 运行ning 来自 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' 没有被更改!为什么?!
此外,如果您正在考虑 'its a permissions issue!' 我已经让 nodejs exec 命令将基本回显写入测试配置文件并且它工作正常。
我也试过 'shelljs' 模块,但没有成功。我已经尝试了数小时的无数组合,但没有成功!我很纳闷。
我认为您需要将 \n
转义为 \n
。现在,它在命令中被解析为文字换行符,这把它搞砸了。
我有一个文件我想扫描它,找到字符'{'并创建一个新行,然后在新行上添加一个IP并在该行的末尾添加一个半古龙水,然后写入配置文件。
当 运行ning 来自 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' 没有被更改!为什么?!
此外,如果您正在考虑 'its a permissions issue!' 我已经让 nodejs exec 命令将基本回显写入测试配置文件并且它工作正常。
我也试过 'shelljs' 模块,但没有成功。我已经尝试了数小时的无数组合,但没有成功!我很纳闷。
我认为您需要将 \n
转义为 \n
。现在,它在命令中被解析为文字换行符,这把它搞砸了。