Сначала разбейте элементы массива на строки (большинство * nix-программ работают только со строками):
for el in "${arr[@]}"
do
echo "$el"
done
Затем сортируйте строки:
for el in "${arr[@]}"
do
echo "$el"
done | sort
Теперь вы можете снова присвоить это массиву:
arr2=( $(
for el in "${arr[@]}"
do
echo "$el"
done | sort) )
Бинго:
$ echo "${arr2[@]}"
x11 x21 x31 y12 y22 y32
Чтобы понять, как все это работает и как его изменить, если оно не выполняет точно то, что вы хотите, взгляните на страницы man
:
man bash
man sort
См. Также Как отсортировать массив в BASH .