É mais fácil com zsh :
string=WER
array=(${(s::)string})
printf '<%s>\n' $array
(observe que os índices de array em zsh começam em 1 como na maioria dos outros shells, não em 0 como em bash / ksh ).
Ou com fish (os arrays também começam em 1):
set string WER
set array (string split '' $string)
printf '<%s>\n' $array
(assume que $string não contém caracteres de nova linha).
POSIXly (o shell POSIX tem um array: $@ (também começa em 1: $1 )), assim também funcionaria em bash ou zsh e o padrão do seu sistema sh :
string=WER
set --
while [ -n "$string" ]; do
tmp=${string#?}
set -- "$@" "${string%%"$tmp"}"
string=$tmp
done
printf '<%s>\n' "$@"
Com csh ou tcsh que você parece estar usando:
set string = WER
set array = "'printf '%s\n' $string:q | fold -w1'"
printf '<%s>\n' $array:q
Assim como para fish , ele também assume que a string não contém caracteres de nova linha. Observe também que algumas implementações de fold serão dobradas em bytes em vez de caracteres, o que significa que não funcionará corretamente se a string contiver caracteres de múltiplos bytes.