Aqui estão duas maneiras de fazer um loop por uma matriz:
#!/bin/bash
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )
echo Loop 1
for x in "${array[@]}"
do
echo "$x"
done
echo Loop 2
for ((x=0; x<${#array[@]}; x++));
do
echo "${array[x]}"
done
Repetição de itens selecionados
Esse script permite que você especifique na linha de comando quais elementos da matriz foram processados:
#!/bin/bash
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )
for x in "$@"
do
echo "${array[x]}"
done
Suponha que queremos fazer um loop nos dois primeiros e pular o terceiro. (Como bash
usa indexação baseada em zero, os dois primeiros são o número 0 e o número 1.) Use:
$ bash script.sh 0 1
CTL_MLPOSDTLP1_1.ctl
CTL_MLPOSDTLP1_2.ctl
Para executar apenas o terceiro:
$ bash s.sh 2
CTL_MLPOSDTLP1_3.ctl
Para iterar de 0
a n-1
for ((x=0; x<n; x++));
do
echo "${array[x]}"
done