Запуск perl файлов из текстового файла - PullRequest
0 голосов
/ 01 ноября 2019

Существует несколько Perl-скриптов, которые запускаются с терминала CYGWIN. Например,

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

Выше приведен пример. Основанный на входном параметре JSmith , он считывает файл базы данных, генерирует идентификатор и выводит его в текстовый файл.

Теперь эти сценарии perl работают на CYGWINпродолжает расти и добавляется в текстовый файл, как показано ниже:

$ 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 и не очень разбираюсь, какие есть варианты.

Идеальным сценарием может быть инструмент, в которомя могу открыть этот текстовый файл и нажать кнопку execute , а затем он выполнит все сценарии и выведет несколько файлов * .txt в один и тот же каталог.

Или, может быть, простой сценарий Perl, который можетсделай это.

Ответы [ 3 ]

4 голосов
/ 01 ноября 2019
  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

Теперь вам просто нужно добавить любого дополнительного пользователя так же, как я сделал для ваших примеров.

0 голосов
/ 02 ноября 2019

Вы можете создать текстовый файл со списком пользователей (по одному на строку), например 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 чтобы добавить еще одну строку в файл.

Белый медведь

0 голосов
/ 01 ноября 2019

Не видя источника для IdGeneratorTool.pl, трудно дать какой-либо конкретный совет;но обычно нетрудно превратить что-то вроде

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

в

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

, чтобы прочитать входные данные из файла с разделителями табуляции, а не из аргументов командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...