Meu script de shell contém um for
loop. O script faz uso de argumentos posicionais via $1
, $2
, $3
, etc. No entanto, tentando acessar esses parâmetros do for
loop usando algo assim:
for i in "$@"; do
echo "$1"
done
... seleciona o primeiro valor expandido. Por exemplo, quando fornecido com uma lista de arquivos por meio de um glob ( ./script.sh *.mp4
), em cada iteração do for
loop o valor de $1
será o primeiro arquivo para o qual o glob se expande.
O mesmo parece se aplicar a fazer:
for i in "$@"; do
echo "$i"
done
É possível usar argumentos posicionais dentro de um for
loop e, em caso afirmativo, como?
Seu 2º snippet funciona bem:
resultado
Se você deseja iterar sobre os índices , você precisa de um loop for aritmético e uma expansão indireta:
saídas
Ref: 3.2.5.1 Construções de Looping , 3.5.3 Expansão de Parâmetros do Shell