Почему моя переменная не увеличивается в цикле bash while?

Я новичок в написании сценариев на bash. Я могу' Кажется, я получаю правильное значение моих счетных переменных для отображения в конце цикла while в моем сценарии bash.

Предпосылки: у меня довольно простая задача: я хотел бы передать текстовый файл, содержащий список путей к файлам сценария bash, пусть он проверит наличие этих файлов и подсчитает количество существующих / отсутствующих файлов. У меня заработала большая часть сценария, кроме счетной части.

N=0
correct=0
incorrect=0
cat $1 | while read filename ; do
    N=$((N+1))
    echo "$N"

    if ! [ -f $filename ]; then

        incorrect=$((incorrect+1))
    else
        correct=$((correct+1))

    fi

done

echo "# of Correct Paths: $correct"
echo "# of Incorrect Paths: $incorrect"
echo "Total # of Files: $N"

Если у меня есть список из 5 файлов, 4 из которых существуют, я ожидаю получить следующий результат (обратите внимание на команду echo в цикле while ):

1
2
3
4
5
# of Correct Paths: 4
# of Incorrect Paths: 1
Total # of Files: 5

Вместо этого я получаю:

1
2
3
4
5
# of Correct Paths: 0
# of Incorrect Paths: 0 
Total # of Files: 0

Что случилось со значениями этих переменных? У Google было много предложений сомнительного качества, и я думаю, что мог бы заставить его работать, добавив немного больше поиска, но краткое объяснение того, что я Было бы очень полезно поступать неправильно.

15
задан wwwilliam 21 February 2011 в 05:52
поделиться