2017-02-04 27 views
-1

bashスクリプトの入力ARGV値が(yes)または(no)のいずれかです。 数値(1)または(0)と等しいには(yes)または(no)が必要で、その数値にはそのARGV値に基づいて出力 が必要です。ARGVに基づく変数の選択

私の試みは、動作するように、このような何かを得ている:script.plはい印刷の&

my $VAR1=   $ARGV[0]; 
my $yes=1; 
my $no=0; 
print $VAR1; 

出力がある:1(ない単語はい)

申し訳ありませんが、私の例では、理由は明らかに愚かなようです$ VAR1は明らかに私がARG値として使ったものです。だから、私がやってみたいのは、ARGVを使ってプリセット値のリストと照合し、そのプリセットの値を出力することです。

ありがとう、

**私はperl noobです。私がこれを正しく説明していないなら、私の謝罪。

+1

たとえば、 'perl -E '%input_map =(yes => 1、no => 0);を使用してみてください。 $ input_map {+ shift} 'yes' –

+0

perl -Eはコマンドラインからそれを実行しています。スクリプトでARGVとしてどのように書くことができますか?変数は別のスクリプトから渡されているので、私はperlスクリプトでyesまたはnoというより複雑なものをやっています。私はちょうどセキュリティの理由のための例としてこれを使用しています。私がARGV値を取得してプリセット値のリストと照合する方法を知っていれば、出力値はプリセット値ですので、そこから行くのが良いです。 – Alby

+0

こんにちはAlby。私の例の 'shift'は' shift @ ARGV'のショートカットです –

答えて

3

したがって、ある値を別の値に基づいて検索したいとします。そのためには、通常、ハッシュを使用するツールがあります。

my %yes_no_to_bool = (
    yes => 1, 
    no => 0, 
); 

@ARGV == 1 
    or die("usage\n"); 

my ($arg) = @ARGV; 

exists($yes_no_to_bool{$arg}) 
    or die("usage\n"); 

my $bool = $yes_no_to_bool{$arg}; 
関連する問題