Eu não sabia que IFS
não é redefinido automaticamente depois de usá-lo. Anteriormente no código, eu tinha definido o IFS=$'\n'
sem armazenar o valor original. Aqui está o que eu deveria ter feito:
# set Internal Field Separator to new line only to split files
oIFS="$IFS"
IFS=$'\n'
array=(${all_files})
# Return IFS to initial value
IFS="$oIFS"
Para verificar novamente o que é o IFS
em um determinado momento, tente printf "%q\n" "$IFS"
. O valor padrão deve ser $' \t\n'
Obrigado @MiniMax & @Jesse_b por ajudar com isso.