Вот более простой пример:
var='a#b#c'
IFS=\# arr=($var)
echo "${arr[@]}"
Конструкция arr=(...)
строит массив. Поскольку для IFS
установлено значение #
, значение var
разбивается на слова по адресу #
вместо пробелов, поэтому
IFS=\# arr=($var)
эквивалентно
arr=(a b c)
. Таким образом, массив arr
состоит из элементов a
, b
и c
.
По той же причине docCodeArr
представляет собой массив, состоящий из значений imgCodeStr
, разделенных на #
. Вот и все.
Учтите, что если значение imgCodeStr
содержит подстановочные знаки (символы среди \[?*
), оболочка расширит шаблон подстановочных знаков до соответствующих имен файлов. Чтобы избежать этого, поместите set -f
перед этой строкой, чтобы отключить расширение подстановочных знаков. Если вам нужно повторно включить расширение подстановочных знаков, используйте set +f
.