Переменные, получающие сброс после прочитанного цикла, который читает из трубопровода

initiate () {
read -p "Location(s) to look for .bsp files in? " loc
find $loc -name "*.bsp" | while read
do
    if [ -f "$loc.bz2" ]
    then
        continue
    else
        filcount=$[$filcount+1]
        bzip $loc
    fi
    if [ "$scan" == "1" ]; then bzipint $loc
    fi
    echo $filcount    #Correct counting
    echo $zipcount    #Correct counting
    echo $scacount    #Correct counting
    echo $valid       #Equal to 1
done

echo $filcount    #Reset to 0
echo $zipcount    #Reset to 0
echo $scacount    #Reset to 0
echo $valid       #Still equal to 1
}

Я пишу скрипт раковины Bash для использования для zip2 Все .bsp файлы внутри каталога. В этом скрипте у меня есть несколько переменных для подсчета итогов (файлов, успешных Zips, успешных сканов целостности), однако я, кажется, столкнулся с проблемой.

Когда найдут $ loc-name "* .bsp" , выходит из файлов, чтобы дать во время чтения , а при прочтении выходит, это Zeros $ filcount , $ Zipcount и $ SCACOUNT (все из которых изменено (увеличено) внутри инициируют () , BZIP (1169613] ) (который называется во время инициирована () ) или bzipint () (который также называется в инициированных () ).

в Чтобы проверить, если это что-то связано с переменными, изменяющимися внутри , инициируют () или другие функции, доступные из него, я использовал ECHO $ Действителен , который определяется за пределами инициирования ( ) (вроде $ filcount , $ zipcount и т. Д.), Но не изменяется с другой функции внутри инициировать () или внутри инициировать () . .

Достаточно интересно, $ Действителен не получает Сброс до 0, как другие переменные внутри инициируют.

Кто-нибудь может сказать мне, почему мои переменные волшебным образом сбрасываются, когда во время чтения выходит?

10
задан codeforester 2 May 2018 в 04:09
поделиться