【问题标题】:nodejs 'exec' command doesn't execute 'sed' command properlynodejs 'exec' 命令无法正确执行 'sed' 命令
【发布时间】:2015-02-11 03:34:37
【问题描述】:

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

从 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 命令将基本回显写入测试配置文件,它运行良好。

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

【问题讨论】:

    标签: javascript node.js sed exec


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多