2013-12-15 5 views
1

Я пытаюсь подсчитать появление слова в файле, который содержит по одному слову в строке (использование egrep было запрещено). Мне удалось найти решение, однако я наткнулся на довольно странную вещь, и мне хотелось бы объяснить, почему так происходит.Shell - переменная теряет значение после цикла

Моя переменная "count" имеет значение 0 после цикла, но она получает приращение правильно во время цикла.

Вот мой код:

for var in "[email protected]" 
do 
    count=0 
    cat $1 | while read line ; do 
     if [ $line = $var ]; then 
      count=$((count + 1)) 
      echo "$var found $count times" 
     fi 
    done  
    echo $count 
done 

Мой вывод:

yes found 0 times 
yes found 1 times 
yes found 2 times 
0 - This is from the echo $count, which I find it very odd to be zero, since it got incremented to 3 during the loop. 

ответ

1

Я считаю, что, когда вы конвейеру новый суб скорлупу породил и количество модифицируется в этой оболочке не ваш текущий , Похоже, что у других людей тоже есть эта проблема. Я наткнулся на это решение от другого Thread. Надеюсь, это поможет!

Смежные вопросы