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