我目前正在编写一个 Perl 脚本来解析配置文件。语法如下
{command parameter1 parameter2}
其中第二个参数是可选的。首先,我只想提取 和 之间的{
内容}
。我正在使用此代码
while (<FILE>) {
chomp;
unless ($_ =~ m/^\/\//) {
$_ =~ /^\{(.*?)\}/s;
print $1;
}
print
字符串将被进一步评估,而不是命令。我现在的问题是脚本只是停止使用一些字符串
只要参数周围有引号,脚本就可以工作。这个
{exec sed 's/ClientAliveInterval\ 300/ClientAliveInterval\ 1800/\' /etc/ssh/sshd_config > /etc/ssh/sshd_config.new}
将返回括号之间的内容,但由于可能有第二个参数,现在很难区分没有引号的参数
其他字符串如
{exec "cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak"}
{exec "/etc/init.d/ssh reload"}
工作完美,包括引号。
但是现在,引号中的字符串,包括斜线或加号(可能还有其他)在这一点上只是冻结 perl 脚本:
{exec "chmod +x /root/setSSHTimer.sh"}
{exec "sed 's/ClientAliveInterval\ 300/ClientAliveInterval\ 1800/\' /etc/ssh/sshd_config > /etc/ssh/sshd_config.new"}
两者都带引号。将第一个重写为“chmod 770 ...”时,它再次起作用。
任何想法是什么导致了这里的问题?