Нужно чтобы скрипт на Bash делал определенные действия с каждой строчкой в файле, пока не достигнет конца.
Допустим есть файл такого видаjohn 324
andry 435
vova 65767
sasha 655Нужно сделать что-то с первой строчкой и записать результат в переменную, затем со второй и так далее пока не конец файла.
Кол-во строк в файле узнаю с помощью
reply=$(echo $(wc -l < /home/filename))Допустим что-то типа
for count=1 to $reply do
{взять строку $reply и выполнить действие}И так пока не выполнится действие с каждой строкой в файле.
Вот как мне "взять" эту строку?
for str in `cat datafile.txt`;do echo $str;done??
http://www.opennet.me/openforum/vsluhforumID9/2283.html
>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
или можно сделать так, чтобы значение номера линии в строке:spawn отрубить пользователя с line5
стиралась цифра(в примере 5) и добавлялась цифра из файла /home/clearline, для соответствующего юзера, а затем запускать этот скрипт.
Только как сделать это в Bash незнаю 8-)))
>или можно сделать так, чтобы значение номера линии в строке:
>
>spawn отрубить пользователя с line5
>
>стиралась цифра(в примере 5) и добавлялась цифра из файла /home/clearline, для соответствующего
>юзера, а затем запускать этот скрипт.
>
>Только как сделать это в Bash незнаю 8-)))
не совсем понятно что тебе нужно, но если у тебя есть имя пользователя,
и тебе надо получить соответствующую пользователю строку из файла, то можно
воспользоваться grepgrep "^vasya " /home/clearline
получишь нужную строкуили можно использовать awk
awk '$1 == "vasya" {print $2}' /home/clearline
чтобы получить только 2-е поле с именем линииестественно предполагается что у тебя в файле именя пользователей не повторяются