array_item= (item1 item2)
Não coloque espaços em torno do =
na atribuição, não funciona. Isso também me dá um erro de sintaxe sobre os parênteses. Você pode obter o erro check_: command not found
se os elementos da matriz não estiverem definidos ou vazios.
for (( i=0; i<${array_item[@]}; i++ ))
${array_item[@]}
se expande para todos os elementos da matriz, acho que você quer ${#array_item[@]}
para o número de elementos. Se a matriz estiver vazia, isso também deve dar um erro, pois o outro operando para a comparação estará ausente.
A construção for (( ... )) { cmds...}
parece funcionar no Bash, mas o manual descreve apenas a construção usual for (( ... )) ; do ... ; done
.
Ou use apenas for x in "${array_item[@]}" ; do ... done
para repetir os valores da matriz.
Se você precisar dos índices durante o loop, pode ser tecnicamente melhor fazer um loop sobre "${!array_item[@]}"
, já que os índices não precisam ser contíguos. Isso também funciona com matrizes associativas.