2015-02-20 2 views
1

Я хочу запустить эту команду оболочки jboss cli в perl-скрипте. он будет работать корректно. Если я запустил эту команду в терминале оболочки, но она не будет внутри внутреннего скрипта perl.Как добавить специальный символ в perl с помощью системной команды?

В Shell:

/subsystem=logging/periodic-rotating-file-handler=SAMPLE:write-attribute(name=formatter,value="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n") 

В Perl:

system("/subsystem=logging/periodic-rotating-file-handler=SAMPLE:write-attribute(name=formatter,value=\"%d{HH:MM:ss,SSS} %-5p [%c] (%t) %s%E%n\")"); 

ошибка, кажется, специальные символы в тексте ниже.

Вход: "%d{HH:MM:ss,SSS} %-5p [%c] (%t) %s%E%n"

Выход: %d%-5p(%t)%s%E%n

Вход: "%d(HH:MM:ss,SSS) %-5p %c (%t) %s%E%n"

Выход: "%d(HH:MM:ss,SSS)%-5p%c(%t)%s%E%n

Я перепробовал много способов, чтобы исправить, но я до сих пор сталкиваются с этой проблемой.

Почему {} и [] не могут печатать в perl. Не могли бы вы дать мне идею решить эту проблему?

ответ

1

Я хочу запустить эту команду оболочки jboss cli в perl-скрипте.

Затем вам необходимо выполнить оболочку jboss cli! Передача команды jboss (или кода Perl или кода JavaScript или ...) на system просто не сработает.

Быстрый поиск Google, кажется, указывает он называется jboss-cli.sh и принимает стандартный -c COMMAND аргумент, так

my $cmd = '/subsystem=logging/...'; 
system('jboss-cli.sh', '-c', $cmd); 
+0

Может я не рекомендую использовать систему() функцию? Есть намного лучшие и безопасные варианты, чтобы сделать внешний вызов другому приложению. – falconspy

+0

@falconspy. Вы можете, но я не знаю, почему вы это сделаете. Я также не знаю, почему вы думаете, что есть что-то более безопасное. – ikegami

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