【发布时间】:2016-04-01 05:34:42
【问题描述】:
我正在尝试从 shell(在调用脚本时)将值传递给 Perl 中的 foreach 函数。
user@system:$ perl perl_script @ARGS
动机:我列出了 50 个开关。 192.168.10.10 到 192.168.10.60 并且必须对所有人执行一些操作。所以试图将其作为速记传递。
#!/usr/bin/perl
my $t_args = $#ARGV+1;
print "Total args: $t_args\n";
print "[$_]\n" foreach @ARGV;
输出 1:
user@system:~/projects/learnperl$ perl counter.pl 12 13 14 15 16
Total args: 5
[12]
[13]
[14]
[15]
[16]
输出 2:错误
user@system:~/projects/learnperl$ perl counter.pl 12..16
Total args: 1
[12..16]
还有其他方法可以通过它,但我想知道我想要实现的目标是否可行。
示例用法:
user@system:$ perl getlogs.pl 10..60
my $network="192.168.0"
foreach my $node (@ARGS){
my $ip="$network.$node";
get_files_from ($ip);
}
这应该会从我的所有设备中获取数据。
做foreach my $node (10..60)是可以理解的。但我想使用foreach my $node (@ARGS)。
【问题讨论】:
-
所以你问如何在你的shell中生成从192.168.10.10到192.168.10.60的IP地址?如果是这样,我们必须知道您使用的是哪个外壳。当然,you can do that with Perl too.
-
不..我不是在问这个。我想知道如何使用 shell (bash) 将
12..16作为单独的 @ARGS 传递,Perl 应该将其扩展为12 13 14 15 16而不是将其解释为 1 个参数,即12..16。
标签: perl