Страница 1 из 1

Передача аргументов из файла

Добавлено: 2012-06-25 17:57:13
Гость
Здравствуйте
Есть текстовый файл где храниться логин -пароль пользователя
надо передать их в выражение

Код: Выделить всё

/#dovecotpw -s MD5-CRYPT -u (имя пользователя) -p (пароль пользователя)
Пробовал передавать через awk -выдает фигню (екранировал вызов dovecotpw обратными кавычками выдает неверный синтаксис) как я понял вызов другой програмы напрямую с awk не поддержываеться

Код: Выделить всё

cat test.txt | awk '{a = dovecotpw -s MD5-CRYPT -u $1 -p $2; print a}' 

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

Код: Выделить всё

#!/bin/sh
cat test.txt | awk '{ print $1, $2}' | while read line
do
dovecotpw -s MD5-CRYPT -u $line -p $line
done
exit 0
Убедительно прошу вас показать путь на светлую сторону. В какую сторону смотреть :oops:

Re: Передача аргументов из файла

Добавлено: 2012-06-25 18:31:33
kpp

Код: Выделить всё

#!/bin/sh
while read user_name pass
do
dovecotpw -s MD5-CRYPT -u $user_name -p $pass
done < test.txt

Re: Передача аргументов из файла

Добавлено: 2012-06-25 18:44:52
mmvds

Код: Выделить всё

#!/bin/sh
OIFS=$IFS; IFS=:
while read user_name pass
do
dovecotpw -s MD5-CRYPT -u $user_name -p $pass
done < test.txt
IFS=$OIFS
В дополнение к kpp небольшая хитрость, если разделитель между логином/паролем не пробел, а например, ":"

Re: Передача аргументов из файла

Добавлено: 2012-06-25 20:09:41
kpp
Какая ж это хитрость ;)
Если разделитель знак двоеточия, хитрость от лукавого:

Код: Выделить всё

while IFS=: read user_name pass
do
 dovecotpw -s MD5-CRYPT -u $user_name -p $pass
done < test.txt

Re: Передача аргументов из файла

Добавлено: 2012-06-26 9:52:52
Гость
Спасибо за помощь :smile: