Primeiro, você precisa remover o texto da atribuição da variável de string:
text="'xdc','cde','erd','ded','ded','kie';"
Você pode usar o formulário de matriz do comando bash read
:
IFS=, read -a ids <<< "${text%;}"
em que a substituição ${text%;}
remove o ponto-e-vírgula final. Observe que, dessa forma, o IFS não é modificado fora do comando read
, portanto não é necessário salvá-lo e restaurá-lo.
Sua sintaxe for-loop no estilo C está quase correta, exceto que no bash, o loop precisa de parênteses duplos, por exemplo,
for ((i=0; i<${#ids[@]}; ++i)); do printf '%s\n' "${ids[i]}"; done
Como alternativa, você pode fazer um loop pelos membros da matriz diretamente usando um for ... in
loop:
for i in "${ids[@]}"; do printf '%s\n' "$i"; done