URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3253
[ Назад ]

Исходное сообщение
"Скрипт на bash"

Отправлено razor , 06-Авг-04 17:09 
Нужно чтобы скрипт на Bash делал определенные действия с каждой строчкой в файле, пока не достигнет конца.
Допустим есть файл такого вида

john 324
andry 435
vova 65767
sasha 655

Нужно сделать что-то с первой строчкой и записать результат в переменную, затем со второй и так далее пока не конец файла.

Кол-во строк в файле узнаю с помощью
reply=$(echo $(wc -l < /home/filename))

Допустим что-то типа

for count=1 to $reply do
{взять строку $reply и выполнить действие}

И так пока не выполнится действие с каждой строкой в файле.
Вот как мне "взять" эту строку?


Содержание

Сообщения в этом обсуждении
"Скрипт на bash"
Отправлено ihor , 06-Авг-04 17:26 
for str in `cat datafile.txt`;do echo $str;done

??


"Скрипт на bash"
Отправлено qq , 06-Авг-04 21:07 

http://www.opennet.me/openforum/vsluhforumID9/2283.html

"Скрипт на bash"
Отправлено razor , 09-Авг-04 11:44 
>for str in `cat datafile.txt`;do echo $str;done
>??
>
>http://www.opennet.me/openforum/vsluhforumID9/2283.html

Спасибо помогло. Но вот другая проблема...
Когда в скрипте на bash подсчитается что нужно отключить пользователя , то запускается скрипт написанный на expect.
В нем есть строка которая отрубает пользователя с линии dialup.
файл отрубания пользователя выглядит примерно так.
#!/usr/bin/expect -f
spawn отрубить пользователя с line5

Скрипт замечательно работает, но проблема в том что я пока не могу
понять как сделать, чтобы передать в скрипт номер линии(line) из файла
/home/clearline/.

Есть файл с именем пользователя и номером линии с которой нужно отрубить.
(/home/clearline)

vova line2
johni line6
sergey line3
oleg line 8


"Скрипт на bash"
Отправлено razor , 09-Авг-04 13:51 
или можно сделать так, чтобы значение номера линии в строке:

spawn отрубить пользователя с line5

стиралась цифра(в примере 5) и добавлялась цифра из файла /home/clearline, для соответствующего юзера, а затем запускать этот скрипт.

Только как сделать это в Bash незнаю 8-)))


"Скрипт на bash"
Отправлено qq , 09-Авг-04 18:33 
>или можно сделать так, чтобы значение номера линии в строке:
>
>spawn отрубить пользователя с line5
>
>стиралась цифра(в примере 5) и добавлялась цифра из файла /home/clearline, для соответствующего
>юзера, а затем запускать этот скрипт.
>
>Только как сделать это в Bash незнаю 8-)))


не совсем понятно что тебе нужно, но если у тебя есть имя пользователя,
и тебе надо получить соответствующую пользователю строку из файла, то можно
воспользоваться grep

grep "^vasya " /home/clearline
получишь нужную строку

или можно использовать awk

awk '$1 == "vasya" {print $2}' /home/clearline
чтобы получить только 2-е поле с именем линии

естественно предполагается что у тебя в файле именя пользователей не повторяются