No POSIX sh, é possível detectar a última iteração de um for
loop dentro do loop?
Estou tentando preencher o espaço em branco neste código de exemplo:
#!/bin/sh
items='1 2 3'
for item in $items; do
echo "$item"
# TODO:
# How do I check whether or not this is the last iteration?
done
Armazena uma string em uma variável escalar
$items
e, em seguida, essa string está sujeita à divisão de IFS + globbing na próxima linha devido a essa$items
expansão sem aspas.Para armazenar vários valores, você deve usar uma variável de matriz.
POSIX
sh
não tem arrays, mas tem os parâmetros posicionais, isso é o que faz ofor
loop por padrão:Ou:
Se você ainda deseja dividir + glob uma
$items
variável separada por espaço, ainda pode fazer:Ou se você não quiser sobrecarregar os parâmetros posicionais do script, use uma função (que tem seu próprio conjunto de parâmetros posicionais):