脚本加载两个参数

脚本加载两个参数

我有 perl 脚本需要两个参数,例如:

./PerlScript 0001 192.168.100.200

但我需要更多时间运行此脚本(40 倍)。

./PerlScript 0003 192.168.100.202
./PerlScript 0061 192.168.100.205
./PerlScript 0061 192.168.100.206
...
...
...

我需要在 PerlScript 之后自动插入参数,该怎么做?从文件加载还是创建数组?

答案1

假设您的参数列表位于“thelist”文件中,如下所示:

0001 192.168.100.200
0003 192.168.100.202
0061 192.168.100.205
0061 192.168.100.206

你可以:

printf "./PerlScript %s %s\n" $(cat thelist) | bash

请注意,如果您这样做(如您的示例中所示):它们将按顺序运行。

改成

printf "./PerlScript %s %s & \n" $(cat thelist) | bash

让它们在后台启动(但要注意不要让你的机器瘫痪......)

答案2

如果参数存储在文件中,则执行此操作的适当方法是使用xargs.

xargs实用程序使用从其标准输入读取的参数运行另一个程序。

xargs -n 2 ./PerlScript <list.in

xargs./PerlScript将一次使用两个参数运行( -n 2),参数取自list.in当前目录中的文件。

该文件list.in可以是

0001 192.168.100.200
0003 192.168.100.202
0061 192.168.100.205
0061 192.168.100.206

或者

0001
192.168.100.200
0003
192.168.100.202
0061
192.168.100.205
0061
192.168.100.206

xargs还可以从管道读取参数:

somecommand | xargs -n 2 ./PerlScript

这里有一些命令生成与前面示例中使用的somecommand形式相同的输出。list.in

相关内容