dee*_*eep 1 regex perl getopt getopt-long
我正在使用GetOpt :: long模块从命令行获取参数并将其分配给相应的变量.但是我在打印时遇到错误.代码和错误如下:
#!usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
GetOptions(
"mount_path=s" => \my $old_path,
"var=s" => \my $var,
"log_path=s" => \my $log_path,
) or die "Error in input variables\n";
print <<"END_INPUTS";
These are your inputs:
old_path= $old_path
var = $var
log_path=$log_path
Press enter twice if all looks GOOD
*********************************************************
END_INPUTS
Run Code Online (Sandbox Code Playgroud)
命令行参数如下:
perl getvar.pl --mount_path=/var/sslvpn --var=7.0.0.2_va-SSLVPN-!7.0.0.2.16sv+.jpn-05!j+g_554863- --log_path=log.txt
Run Code Online (Sandbox Code Playgroud)
我在运行时遇到以下错误
-bash: !7: event not found
Run Code Online (Sandbox Code Playgroud)
请有人帮我这个.谢谢.
这不是Perl问题.bash shell !作为特殊字符处理.你必须引用那个论点.
--var='7.0.0.2_va-SSLVPN-!7.0.0.2.16sv+.jpn-05!j+g_554863-'
Run Code Online (Sandbox Code Playgroud)
你可以告诉它这是一个bash问题而不是Perl问题,因为消息说它来自bash:
-bash: !7: event not found
Run Code Online (Sandbox Code Playgroud)
Bash甚至从未进入运行程序的部分.