0

我有一个由许多 perl 脚本组成的 shell 脚本,其中一个 perl 脚本每次都必须使用不同的输入运行,并且值必须在最后存储在一个文件中,如图所示

 #!/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或任何其他方式一次将每个数组值作为输入。这样我就可以拥有我的shell脚本

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

2 回答 2

1

编写从文件中获取输入的 perl 程序的常用方法是按如下方式构造它们:

while ($line = <>) {

    # do stuff with $line
}

如果在命令行上给出了文件名,perl 会自动将它们一一打开,并将这些行提供给您的脚本。如果没有给出文件名,它将从标准输入中读取。

但是,如果您以这种方式编写脚本,您将无法直接在命令行上给它结果,它们必须在文件或标准输入中。

要在同一行处理多个水果,您的代码可以执行以下操作:

while (my $line = <>) {

    chomp $line;

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

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

在 bash 中,逐行:

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