我有一个perl脚本,我在其中使用它作为包装器。 perl脚本从用户收集参数,然后使用参数作为数组调用子脚本。
我遇到的问题是,当执行子脚本时,所有参数都在ARGV [1]中。我可以使用一些特殊的分隔符吗?我真的不想在子脚本中循环一个数组;有点打败了目的。
[KSH脚本]
Your Args
ARG1: foo bar
ARG2:
然而,我期待的结果是
Your Args
ARG1: foo
ARG2: bar
我已将参数推入数组并将参数作为数组提供。
[Perl Script]
print "Enter $arg_array[$i]: ";
my $value = <STDIN>;
chomp $value;
if (defined $value) {
push (@arg_entry, "$value"); #create args array to pass to selectd script
}
.... sometime later, in another function ......
system("$select_script", "@arg_entry");
答案 0 :(得分:2)
使用system
传递单个字符串,将使用shell进行解释(并遵循空格分隔参数):
system 'command arg1 arg2';
或者您使用多个参数,就像您一样。在这种情况下,第一个参数是程序,以下每个参数都是一个参数。
system 'command', 'arg1', 'arg2';
所以,既然你通过在字符串中插入它们来加入所有的参数(用“@arg_entry”),那么它们就是一个。解决方案很简单,只是不进行插值,它们将在参数列表中正常插入。
system 'command', @args;
system($select_script, @arg_entry);