Здравствуйте.Появилась необходимость читать содержимое файла построчно. В строке присудствуют пробелы поэтому так
elist=$(/bin/cat /tmp/robot/ea)
for str in $elist;
do
...
done
не получается, берутся отдельные слова.Как читать строки целиком, независимо от того етсь там пробелы или другие символы или нет?
Попробуй делать тож'самое на перле.
Синтаксис почти один в один и есть такая штука, как split, с которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
Во как!
>Попробуй делать тож'самое на перле.
>Синтаксис почти один в один и есть такая штука, как split, с
>которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)
>
>
>Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
>
>Во как!Ты знанешь пробовал, но там другая проблема (а может вовсе и не проблема) мне надо вызвать скрипт.
прога такая:
open (FILE, "имя_файла");
@lines=<FILE>;
close (FILE);
$kol=@lines;
for ($i=0;$i<$kol;i++)
{
#тут вызывается скрипт которому передается результат чтения файла - строка
}
так вот сколько бы повторов не было, цикл вываливается после первого.
>>Попробуй делать тож'самое на перле.
>>Синтаксис почти один в один и есть такая штука, как split, с
>>которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)
>>
>>
>>Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
>>
>>Во как!
>
>Ты знанешь пробовал, но там другая проблема (а может вовсе и не
>проблема) мне надо вызвать скрипт.
>прога такая:
>open (FILE, "имя_файла");
>@lines=<FILE>;
>close (FILE);
>$kol=@lines;
>for ($i=0;$i<$kol;i++)
>{
> #тут вызывается скрипт которому передается результат чтения файла - строка
>
>}
>так вот сколько бы повторов не было, цикл вываливается после первого.не знаю почему может вываливаться, но помоему свот такой код приятней.
open(FILE, "< /tmp/file");
foreach my $line (<FILE>) {
&some_sub($line);
}
close(FILE);ну или
open(FILE, "< /tmp/file");
my @file = <FILE>;
close(FILE);
foreach my $line (@file) {
&some_sub($line);
}
где ессесно функция some_sub что то делает со строкой.
>>>Попробуй делать тож'самое на перле.
>>>Синтаксис почти один в один и есть такая штука, как split, с
>>>которой ты хоть пробелы в плюсики, хоть наоборот можешь вертеть %)
>>>
>>>
>>>Кстати, слышал слух, что в линухах могут вообще shell сотоварищи заменить перлом.
>>>
>>>Во как!
>>
>>Ты знанешь пробовал, но там другая проблема (а может вовсе и не
>>проблема) мне надо вызвать скрипт.
>>прога такая:
>>open (FILE, "имя_файла");
>>@lines=<FILE>;
>>close (FILE);
>>$kol=@lines;
>>for ($i=0;$i<$kol;i++)
>>{
>> #тут вызывается скрипт которому передается результат чтения файла - строка
>>
>>}
>>так вот сколько бы повторов не было, цикл вываливается после первого.
>
>не знаю почему может вываливаться, но помоему свот такой код приятней.
>open(FILE, "< /tmp/file");
>foreach my $line (<FILE>) {
> &some_sub($line);
>}
>close(FILE);
>
>ну или
>open(FILE, "< /tmp/file");
>my @file = <FILE>;
>close(FILE);
>foreach my $line (@file) {
> &some_sub($line);
>}
>
>
>где ессесно функция some_sub что то делает со строкой.что самое интересное нужно вызывать не перловскую процедуру, а BASH скрипт корорый написан до меня.
делаю exec "путь_и_имя_скрипта";
он отрабатывает, а цикл уже не продолжается.
>что самое интересное нужно вызывать не перловскую процедуру, а BASH скрипт корорый
>написан до меня.
>делаю exec "путь_и_имя_скрипта";
>он отрабатывает, а цикл уже не продолжается.
Так вызывай его в цикле типа вообще тупого
my $x=1;
while ($x){
exec_до _посинения;
}
>
>>что самое интересное нужно вызывать не перловскую процедуру, а BASH скрипт корорый
>>написан до меня.
>>делаю exec "путь_и_имя_скрипта";
>>он отрабатывает, а цикл уже не продолжается.
>Так вызывай его в цикле типа вообще тупого
> my $x=1;
> while ($x){
> exec_до _посинения;
>
> }Спасибо за совет, но задача состоит из двух частей.
1) Читать из файла построчно
2) Прочитанное передавать BASH скрипту.зачем же мне бесконечный while если нужно ровно столько сколько строк в файле.
Видимо надо иначе подойти к решению проблемы. Наверное я выбрал не самы лучший алгоритм.
>Появилась необходимость читать содержимое файла построчно.cat file.txt| while read line; do
echo "$line"
done
>>Появилась необходимость читать содержимое файла построчно.
>
>cat file.txt| while read line; do
> echo "$line"
>doneЕсли хотим сэкономить на один процесс (cat) в ущерб
читабельности, тоwhile read line
do
echo "$line"
done < file.txt