我有 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