Вопрос по работе цикла.
Этот скрипт считает количество строк в файле,
имя которого получает как парамет.#!/bin/sh
COUNTER=0
while read TEXTLINE
do
COUNTER=`expr $COUNTER + 1`
echo $COUNTER
done < $1
echo "TOTAL: $COUNTER"Ниже результат работы.
Почему обнулилась переменная при выходе из цикла ?
И как это предотвратить ?1
2
3
TOTAL: 0
>Вопрос по работе цикла.
>Этот скрипт считает количество строк в файле,
>имя которого получает как парамет.
>
>#!/bin/sh
>COUNTER=0
>while read TEXTLINE
>do
>COUNTER=`expr $COUNTER + 1`
>echo $COUNTER
>done < $1
>echo "TOTAL: $COUNTER"
>
>Ниже результат работы.
>Почему обнулилась переменная при выходе из цикла ?
>И как это предотвратить ?
>
>1
>2
>3
>TOTAL: 0странный скрипт .. у меня вообще такой не работает :)
>Вопрос по работе цикла.
>Этот скрипт считает количество строк в файле,
>имя которого получает как парамет.
>
>#!/bin/sh
>COUNTER=0
>while read TEXTLINE
>do
>COUNTER=`expr $COUNTER + 1`
>echo $COUNTER
>done < $1
>echo "TOTAL: $COUNTER"
>
>Ниже результат работы.
>Почему обнулилась переменная при выходе из цикла ?
>И как это предотвратить ?
>
>1
>2
>3
>TOTAL: 0
утверждать не берусь, так как в основном с bash работаю, но есть подозрение, что при перенапралении ввода обработка цикла происходит в сабшелле. и изменяешь ты внутри цикла переменную этого сабшелла, которая при выходе из него просто перестает существовать. попробуй так:#!/bin/sh
COUNTER=0function fff()
{
while read TEXTLINE | return $COUNTER
do
COUNTER=`expr $COUNTER + 1`
echo $COUNTER
done < $1
}fff
echo "TOTAL: $?"
PS в bash'е твой скрипт нормально отрабатывает. там похожая ситуация возникает только если пайпы использовать (cat $1 | while ...), а при
"< $1" - все хорошо
>#!/bin/sh
>COUNTER=0
>
>function fff()
>{
>while read TEXTLINE | return $COUNTER
>do
>COUNTER=`expr $COUNTER + 1`
>echo $COUNTER
>done < $1
>}
>
>fffтут должно быть fff $1
>echo "TOTAL: $?"
а юзать wc уже не модно ?
>а юзать wc уже не модно ?а это смотря, что сделать надо. если просто количество строк посчитать, то несомненно через wc легче, а если паралельно с подсчетом еще и их обработку производить - тут wc не помошник. спрашивали же почему скрипт не работает, а не как количество строк в файле подсчитать :)