Substituir
for file_name in 'ls -Al ${source_folder}*"${file_pattern}"*.csv'
Com:
for file_name in "${source_folder}"*"${file_pattern}"*.csv
A saída de um comando nos backticks, como no primeiro formulário acima, está sujeita à divisão de palavras. O segundo formulário acima não usa backticks. Por outro lado, ele funcionará com qualquer nome de arquivo, mesmo aqueles que contenham espaços, tabulações, novas linhas ou qualquer outro caractere difícil.
Além disso, substitua
source_file_restructure ${source_folder} ${target_folder} "${file_pattern}" ${delimiter}
com
source_file_restructure "${source_folder}" "${target_folder}" "${file_pattern}" "${delimiter}"
Sem as aspas duplas, o shell executará a divisão de palavras. Com as aspas duplas, a função será chamada corretamente mesmo se source_folder
ou target_folder
tiverem espaços, tabulações, novas linhas ou outros caracteres difíceis.