Я новичок в написании сценариев на 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 было много предложений сомнительного качества, и я думаю, что мог бы заставить его работать, добавив немного больше поиска, но краткое объяснение того, что я Было бы очень полезно поступать неправильно.