LINUX.ORG.RU
ФорумAdmin

Perl фунция system помогите разобраться


0

0

Есть файлик такого содержимого
user1 pass1
user2 pass2
.....
около 100 юзеров.

Нужно выполнить следующие команды:
ejabberdctl register user1 hostname pass1
ejabberdctl register user2 hostname pass2
и.т.д

Пробую сделать так:
#!/usr/bin/perl
$hostname = myhostname;
open(f,"userpass");
while (<f>) {
$user = system ("echo $_ | awk {print $1}");
$pass = system ("echo $_ | awk {print $2}");
system ("ejabberdctl register $user $hostname $pass");
}
close(f);

Но так не работает. Подскажите как можно переделать скрипт на Перле или на баше?

anonymous

cat file.txt | while read USER PASS; do
ejabberdctl register $USER hostname $PASS
done

Slavaz ★★★★★
()

system не возвращает stdout процесса же.
Стоит выполнять команду тоже через open. open умеет "открывать" пайпы:

{
open(U, "echo $_ | awk '{print \$1}' |"); $user = <U>; close(U);
open(P, "echo $_ | awk '{print \$2}' |"); $pass = <P>; close(P);
chop($user, $pass);
system ("ejabberdctl register $user $hostname $pass");
}

внимание на \ перед $1.

Deleted
()
Ответ на: комментарий от Deleted

А можно ссылочку на доку с _примерами_ (именно примерами, а не теорией) по баш и перл-скриптингу?

anonymous
()

> $user = system ("echo $_ | awk {print $1}");
> $pass = system ("echo $_ | awk {print $2}"); 

Если это перл, то я испанский летчик.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.