Esse é o erro que você teria se estivesse interpretando esse script com o shell Bourne, um shell muito antigo dos anos 70, pouco usado atualmente, exceto talvez no Solaris 10 ou mais.
Então, minha aposta seria que esse script está sendo interpretado por /bin/sh no Solaris 10 ou anterior, não em ksh . No Solaris, o padrão sh está em /usr/xpg4/bin/sh .
O shell Bourne não suportava a forma $(...) de substituição de comando, você tinha que usar '...' .
Em qualquer caso, nem a shell Bourne nem a especificação POSIX sh suportam matrizes. Para atribuir uma variável de matriz ao conteúdo das linhas não vazias da saída de um comando com /bin/ksh do Solaris 10 (que é baseado em ksh88), você precisaria:
set -o noglob
IFS='
'
set -A array -- $(cmd)
(note que os arrays do ksh88 não podem ter mais de 4096 elementos).
E então você exibe os elementos da matriz como:
((${#array[@]})) && printf '"%s"\n' "${array[@]}"
Se o seu script tiver #!/bin/ksh she-bang, ele deverá ser invocado como /path/to/the/script ou ksh /path/to/the/script , não sh /path/to/the/script .