1

私は csh でシェル スクリプトを書いています。この関数の 1 つは、引数を受け取る perl スクリプトを実行することです。

csh スクリプト自体はコマンド ライン引数 (スペースで区切られた値として $* に格納されます) を受け取り、これを perl スクリプトに渡します。

私の問題は、私が実行したときです:

perl myscript.pl --args $*

perl スクリプトは、$* の最初の引数のみを取得します。しかし、私が実行した場合:

echo $*csh スクリプト内から、すべての引数を正しく出力します。

任意の数の引数を渡すことができます (したがって、引数を静的変数に格納して渡すことはできません)。

なぜこれが起こっているのか、どうすれば修正できるのか誰にもわかりませんか?

4

2 に答える 2

1

それぞれの前に --args を付けずに引数を配列で終了させたい場合は、Getopt::Long の実験的な複数の値の構文を使用できます。

GetOptions("args=s{,}" => \@my_args);

https://metacpan.org/module/Getopt::Long#Options-with-multiple-valuesを参照してください

于 2012-06-12T18:17:56.217 に答える
1

$*csh スクリプトで引用する必要があります。

perl myscript.pl --args "$*"

ここにあるmyscript.pl

use warnings;
use strict;
use Getopt::Long;
use Data::Dumper;

my %opt;
GetOptions(\%opt, 'args=s');
print Dumper(\%opt);

これが私がそれを呼び出す方法です:

script.csh arg1 arg2

$VAR1 = {
          'args' => 'arg1 arg2'
        };
于 2012-06-12T15:32:15.307 に答える