Как говорит Вриккен, в то время как тело работает в подоболочке, поэтому все изменения в массиве файловых массивов исчезнут, когда закончится подоболочка. На ум приходит пара разных решений:
Замена процесса (менее читабельно, но не требует подоболочки)
while read line; do
:
done < <(git diff --name-status)
echo "${filearray[@]}"
Используйте измененную переменную в подоболочке, используя группирование команд
git diff --name-status | {
while read line; do
:
done
echo "${filearray[@]}"
}
# filearray is empty here