Я запускаю поиск в каталоге для выполнения определенных операций над файлами. Я также хочу, чтобы подсчитать, сколько файлов были затронуты, но какие-то странные вещи произошли в цикле:Подсчет в цикле while
COUNTER=0
find . -type f -name "*.txt" | while read f
do
let COUNTER++
echo Counter is $COUNTER # This shows COUNTER working...
done
echo Counter is $COUNTER # COUNTER is back to 0 at this point...
Почему $COUNTER
сбросить себя?
Справка из [Bash] Ловушки (http://mywiki.wooledge.org/BashPitfalls#grep_foo_bar_.7C_while_read_-r.3B_do_.28.28count.2B-.2B-. 29.29.3B_done) также [Я устанавливаю переменные в цикле, который находится в конвейере. Почему они исчезают после завершения цикла? Или, почему я не могу передать данные для чтения?] (Http://mywiki.wooledge.org/BashFAQ/024) – kojiro
@nwinkler Хотя ваш предложенный дубликат получил больше голосов, этот вопрос также содержит отвлекающую логическую ошибку. На выбор должны быть десятки других дубликатов, и мои могут быть и не лучшими. – tripleee
@ tripleee Достаточно честно, я заметил, что один и тот же вопрос задавали и отвечали несколько раз, и я выбрал тот, у которого было больше всего голосов :-) – nwinkler