如何使用系统命令在perl中添加特殊字符?

时间:2015-02-20 14:59:09

标签: perl shell

我想在perl脚本中运行这个jboss cli shell命令。它将正常工作如果我在shell终端中运行此命令,但它不会在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 个答案:

答案 0 :(得分:1)

  

我想在perl脚本中运行这个jboss cli shell命令。

然后你需要执行一个jboss cli shell!将jboss命令(或Perl代码或JavaScript代码或......)传递给system是行不通的。

快速谷歌搜索似乎表明它的名称为jboss-cli.sh,并且它接受标准的-c COMMAND参数,所以

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