从perl脚本调用perl脚本

时间:2011-12-09 04:18:42

标签: perl bash shell

我想从一个带有bash shell中的大参数列表的perl脚本调用perl脚本。参数包含特殊字符,例如\*()等。每个特殊字符都由单个转义字符\引导。< / p>

但是,当我从第一个perl脚本调用第二个perl脚本(然后调用shell脚本)时,会对转义字符进行评估,并在shell中显示特殊字符,从而导致语法错误。

所以基本上我想在第一个perl脚本调用第二个perl脚本时阻止转义字符的评估,当我从第二个perl脚本调用shell脚本时应该对它进行评估。

EG。第一个perl'MonitorAdmin'脚本的输入是:

MonitorAdmin -reversefilter -container="LogServerContainer" -filepath="/home/esg2/YogeshTemp/VSDEFAULT/logs" -filename="System.log" -pattern=".*\t.*\t(DEBUG)\t.*\t.*\t.*\t(SecurityService)\t.*\t.*\t.*\t.*\t.*" -linecount="5001" -targetfile="

2 个答案:

答案 0 :(得分:2)

Perl的execsystem命令如果传递一个包含多个元素的列表,则不会调用shell,但是每个列表元素都会成为一个单独的参数,即空格不会分开参数。我认为即使在执行shell脚本时这也很有效,因为你没有使用-c选项调用shall。

答案 1 :(得分:1)

system有两种形式,一种执行shell命令(system($shell_cmd)),另一种启动程序(system($program, @args))。尽管我们可以通过您的灯柱告诉您,您似乎使用了错误的帖子。你所需要的只是

system('MonitorAdmin2', @ARGV)

没有shell来“误解”这些角色。