2

Getpt::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

コマンド ライン引数は次のとおりです。

 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  

これを実行中に次のエラーが表示されます

-bash: !7: event not found
4

1 に答える 1

8

これは Perl の問題ではありません。bash シェルは!特殊文字として処理しています。その引数を引用する必要があります。

 --var='7.0.0.2_va-SSLVPN-!7.0.0.2.16sv+.jpn-05!j+g_554863-' 

メッセージに bash からのものであることが示されているため、Perl の問題ではなく bash の問題であることがわかります。

-bash: !7: event not found

Bash は、プログラムを実行する部分に到達することさえありません。

于 2014-06-16T23:00:31.387 に答える