0

私は非常に多くのperlスクリプトで構成されるシェルスクリプトを持っています。perlスクリプトの1つは毎回異なる入力で実行する必要があり、値は図のように最後に1つのファイルに保存する必要があります。

 #!/bin/sh
 .....
 ....
 perl test.pl apple
 perl test.pl mango
 perl test.pl banana
 ... 
... 
....

これらの名前で生成されたファイルを見て、コマンドラインでこれらの名前を入力します。

**names.txt**
apple
mango
banana

また

**names.txt**
    apple    mango   banana

入力として一度に各名前を受け取るperlまたはshellでの方法です。
つまり、names.txtを配列と見なすことができ、perlスクリプトは、ARGVまたはその他の手段を使用して、一度に各配列値を入力として受け取ります。

#!/bin/sh
     .....
     ....
     perl test.pl names.txt
     .... 
    ... 
    ....
4

2 に答える 2

1

ファイルから入力を受け取る perl プログラムを作成する通常の方法は、次のように作成することです。

while ($line = <>) {

    # do stuff with $line
}

コマンド ラインでファイル名を指定すると、perl はファイルを 1 つずつ自動的に開き、その行をスクリプトに渡します。ファイル名が指定されていない場合は、標準入力から読み取ります。

しかし、このようにスクリプトを作成すると、コマンドラインで直接フルーツを与えることができなくなります。それらはファイルまたは標準入力にある必要があります。

同じ行で複数の果物を処理するには、コードで次のことができます。

while (my $line = <>) {

    chomp $line;

    foreach my $fruit ( split ' ', $line ) {

        # do something with $fruit
    }
}
于 2012-09-03T08:41:20.760 に答える
0

bash では、1 行ずつ:

while read fruit
do
  perl test.perl "$fruit"
done < names.txt
于 2012-09-03T05:47:44.840 に答える