você precisa de um espaço depois de '[' porque '[' é um comando veja aqui link
Você também precisa de $ {} ao redor da referência da variável array, então você deve ter:
source_array_list[0]="a"
source_array_list[1]="b"
source_array_list[2]="c"
source_array_list[3]="d"
source_array_list[4]="e"
source_array_list[5]="f"
source_array_list[6]="g"
source_array_list[7]="h"
while [ $a -le 6 ]
do
target_array[a]=${source_array_list[$a]}
echo "${source_array_list[$a]}"
a='expr $a + 1'
done
você também pode simplificar isso fazendo o seguinte
source_array_list=( 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h')
target_array=()
for element in "${source_array_list[@]}"
do
target_array+=(${element})
echo "${element}"
done
echo ${target_array[@]}