Um índice zero é perfeitamente válido se você pensar no índice como sendo realmente um deslocamento do endereço base de uma matriz. Essa é a norma de fato, embora varie de dialeto para dialeto. Com a antiga linguagem jovial, [0]na verdade continha o tamanho máximo da matriz. então começou com [1].
Com algumas implementações básicas, você pode optar arbitrariamente por ter um 0ou 1como o primeiro índice. E pelo menos um básico permite designar matrizes para o índice do fron [n]para [m]. onde ne mpode ter qualquer valor inteiro, mesmo negativo, contanto que nseja menor ou igual a m. O valor ao qual neles são subtraídos dos [index]inseridos, como index-n = 0se o índice correspondesse n.
Mas você pode fazer a mesma coisa e muito mais em seu próprio código. Você pode até reverter a ordem de uma matriz desta maneira:
dim array(0, abs(m-n));
step=sign(m-n);
if n > m then
base=m
else
base=n;
fi
Este exemplo de código é, na verdade, apenas parcialmente de um idioma. Eu só queria que fosse mais legível. A variável step é usada para controlar a direção aparente na qual você está se movendo, seja positiva ou negativa, e é usada para calcular o índice efetivo ao entrar ou sair da matriz, na qual é sempre sempre positivo [0].
${array[@]}aspas duplas. Caso contrário, a divisão de palavras será realizada e você obterá resultados indesejáveis, em entradas comoarray=("item 1" "item 2" "item 3").