Построчное чтение файла в Bash
Подскажите пожалуйста как мне сделать следующее в баше:
Есть файл (file.txt) к примеру с таким содержиммым /var/dir /usr/lical/dir /root/dir ... Необходимо что бы считывалась первая строчка и записывалась в переменную к примеру var1 затем считывалась вторая строчка и присваевалась переменной var2 и так до конца файла... Просьба ответить кодом) с увожением Александр.. |
Не оно ?
Код:
cat file.txt | while read line |
Вот! Именно эта конструкция мне и нужна только прблемма в том что я не могу разобрать как она работает??
если вы представите более подробные комментарии буду очень благодарен! |
Я не хочу отправлять в google, но все-таки советую почитать что-нибудь по bash, например вот это.
Вкратце, по-русски : cat выводит собержимое файла, оператор while через пайп получает вывод команды cat, построчно его читает оператором read в переменную line и печатает эту переменную на экран командой echo. |
Нет нет я не прошу курс молодого бойца) я все это знаю просто пишу на bashe не часто а такого в практике еще не было....но за вежливость спасибо)
я просто хочу понять как данная конструкция работает! получается что сначала первая строка записывается в переменную var1 и выводится на экране потм вторая строка записывается в туже переменную var1 и выводится на экран и так до конца файла?? я правельно понемаю? |
да, верно
|
А если перед записью в переменную нового значения(например второй строки) мне нужно выполнить с ней некоторые операции например копирование в эту директорию или удоление то мне необходимо
cat file.txt | while read line do echo $line cp /filename.txt $line done так можно на сколько я понемаю? а если мне нужно выполнить с каждой строчкой разный! набор операций как быть тогда? |
Цитата:
Код:
cat file.txt | while read dirname |
Спасибо большое BuGfiX, теперь разобрался)
Тема закрыта. |
Цитата:
Это у меня только такое? |
А вот такая ситуация, есть файл в каждой строке которого числовое значение, их 4-е (значений). Нужно из этого файла считать эти значения построчно и присваивать их переменой поочерёдно. Но нужно это делать в цикле от 1 до 4-х, т.е. цикл посчитал 1 - чтение первой переменой из файла, цикл посчитал 2 - чтение второй и т.д. до 4-х. Вариант с while read line считывает сразу все 4-е переменные в первом цикле, а не по одной. Например, есть простая конструкция типа:
Код:
for I in 1 2 3 4; do |
vlad001,
В таком случае нужно использовать массив, а не переменную. И cat с пайпом не нужен, файл можно стрелкой в цикл читать: Код:
while read -a line |
Время: 14:54. |
Время: 14:54.
© OSzone.net 2001-