2015-02-11 3 views
2

У меня есть файл, где я хочу его отсканировать, найти символ '{' и создать новую строку, а затем добавить IP-адрес в новую строку и добавить полу-кельн до конца строки, а затем записать в файл конфигурации.Команда nodejs 'exec' не выполняет команду 'sed' правильно

можно достичь с помощью следующей команды SED при запуске из оболочки:

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

внутри test.conf:

acl testACL{ 
}; 

выход из команды в шоу оболочки:

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 написать базовое echos в тестовый файл конфигурации, и он работал нормально.

Я также попробовал модуль 'shelljs', которому не повезло. Я пробовал бесчисленные комбинации в течение нескольких часов без преобладания! Я озадачен.

ответ

2

Я думаю, вам нужно избежать вашего \n как \\n. Прямо сейчас, это получает синтаксический анализ как буквальная новая строка в команде, которая испортила его.

Смежные вопросы