我有一个文件,一些文件,像这样:
$cat someFile hdisk1 active hdisk2 active
我使用这个shell脚本来检查:
$cat a.sh #!/usr/bin/ksh for d in 1 2 do grep -q "hdisk$d" someFile && echo "$d : ok" done
我试图把它转换成Perl:
$cat b.sh #!/usr/bin/ksh export d for d in 1 2 do cat someFile | perl -lane 'BEGIN{$d=$ENV{'d'};} print "$d: OK" if /hdisk$d\s+/' done
解决方法
您可以使用“s”开关启用基本命令行参数。为破折号开始的每个参数定义一个变量。 – 告诉您的命令行参数的起始位置。
for d in 1 2 ; do cat someFile | perl -slane ' print "$someParameter: OK" if /hdisk$someParameter\s+/' -- -someParameter=$d; done
见:perlrun