从文本文件运行perl文件



有多个perl脚本从CYGWIN终端运行。一个例子是

$ perl IdGeneratorTool.pl JSmith -i userInfo.adb -o JSmith.txt

以上就是一个例子。基于输入参数JSmith,它读取一个数据库文件,生成一个ID并将其输出到一个文本文件。

现在,这些在CYGWIN上运行的perl脚本不断增长,并将其添加到如下所示的文本文件中

$ perl IdGeneratorTool.pl JSmith -i userInfo.adb -o JSmith.txt
$ perl IdGeneratorTool.pl PTesk -i userInfo.adb -o PTesk.txt
$ perl IdGeneratorTool.pl CMorris -i userInfo.adb -o CMorris.txt
$ perl IdGeneratorTool.pl JLawrence -i userInfo.adb -o JLawrence.txt
$ perl IdGeneratorTool.pl TCruise -i userInfo.adb -o TCruise.txt
...
....
......
.......
.........

而且这个名单还在不断增加。

我想知道是否有一种方法可以一次性执行文本文件中的所有perl脚本。

我是perl的新手,对选项不太了解。

一个理想的场景可能是,一个工具,我可以打开这个文本文件,单击执行按钮,然后它执行所有脚本,并将多个*.txt文件输出到同一目录中。

或者一个简单的perl脚本就可以做到这一点

  1. 将它们放入文件makeall(或任何您想调用的文件(中
  2. #!/bin/bash作为第一行放入文件
  3. 在cygwin中输入chmod +x makeall
  4. 在cygwin中输入./makeall

有了这个,您就创建了一个bash脚本,它将完成您对perl脚本的所有调用。

另一种选择是将所有用户信息放入csv文件中,然后读取该文件,以便调用脚本。

等等!更容易!

将以下内容放入makeall脚本中:

#!/bin/bash
for user in 
JSmith 
PTesk 
CMorris 
JLawrence 
TCruise 
; do
perl IdGeneratorTool.pl "$user" -i userInfo.adb -o "$user".txt
done

现在,您只需要像我为您的示例所做的那样添加任何其他用户。

如果看不到IdGeneratorTool.pl的来源,很难给出任何具体的建议;但一般来说,像这样的东西并不难

do_stuff($ARGV[0], $opt_i, $opt_o);

进入

while (<>) {
chomp;
$user, $adb, $outputfile = split('t');
do_stuff($user, $adb, $outputfile);
}

从制表符分隔的文件而不是从命令行参数读取输入。

您可以创建带有用户列表的文本文件(每行一个(,例如user_list.txt

JSmith
PTesk
CMorris
JLawrence
TCruise

然后在同一目录中创建bash脚本process_list.sh

#!/bin/bash
for user in `cat user_list.txt`
do
perl IdGeneratorTool.pl $user -i userInfo.adb -o ${user}.txt
done

现在让bash脚本可执行chmod +x process_list.sh,它就可以执行了。

一旦您需要添加新用户,请编辑user_list.txt以在文件中再添加一行。

北极熊

最新更新