Esse problema surge na maioria das linguagens de programação no mesmo formato. É uma complicação para pular o sufixo de alguma forma. Eu não vou entrar na sintaxe do shell, mas apenas delinear no pseudo-código as maneiras pelas quais as pessoas geralmente lidam com isso:
# get it over with at the beginning:
print a[0] (no newline)
loop from a[1] onwards:
print "or\n"
print a[i]
print "\n" #terminate the last one
Este caso funciona por meio de um loop de índices, ou simplesmente passando por todos os elementos (ignorando o primeiro), já que nenhum teste de índice está envolvido (se o idioma suportar iteração direta sobre matrizes, como bash e python). / p>
Você também pode começar de 0 e pular o último, e lidar com ele fora do loop (a imagem espelhada acima), mas pular o último é geralmente mais sujo e pode ser impossível (pular o último, você deve saber que é o último, mas o primeiro sempre pode ser ignorado imediatamente). Por exemplo, se você estiver lendo elementos do fluxo, não saberá com antecedência qual é o último, e esse formulário é a única opção !
Do outro jeito:
# test a loop counter
N = length of array
loop with indices:
if i==N-1:
print a[i]
else:
print a[i],"or"
Observe que este caso exige que você saiba quantos elementos existem e testa constantemente o índice. Por este motivo, você deve fazer um loop sobre os índices ou manter o controle do índice separadamente (definindo i = 0 antes do loop e do i ++ dentro).
Eu escrevi isso como uma receita, deixarei a implementação bash para você.