Я согласен с другими, что, скорее всего, как вы получаете доступ к элементам, это проблема.Правильно указывать имена файлов в назначении массива:
FILES=(
"2011-09-04 21.43.02.jpg"
"2011-09-05 10.23.14.jpg"
"2011-09-09 12.31.16.jpg"
"2011-09-11 08.43.12.jpg"
)
for f in "${FILES[@]}"
do
echo "$f"
done
Использование двойных кавычек вокруг любого массива формы "${FILES[@]}"
разбивает массив на одно слово на элемент массива.Кроме этого он не разделяет слова.
Использование "${FILES[*]}"
также имеет особое значение, но объединяет элементов массива с первым символом $ IFS, что приводит к одно слово, что, вероятно, не то, что вам нужно.
Использование оголенного ${array[@]}
или ${array[*]}
подвергает результат этого расширения дальнейшему расщеплению, поэтому вы закончитесо словами, разделенными на пробелы (и все остальное в $IFS
) вместо одного слова на элемент массива.
Использование цикла for в стиле C также прекрасно и позволяет избежать беспокойства о разбиении слов, если вынеясно на этом:
for (( i = 0; i < ${#FILES[@]}; i++ ))
do
echo "${FILES[$i]}"
done