para loop para iterar através de alguma posição de arquivo nth

3

Como faço a iteração para o enésimo arquivo em um loop for no unix? abaixo de algum código que tentei mas não consegui

#!/bin/bash
#
n=2
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )
for x in "${array[@]}"
for ((x=${array[@]}; x<=n; x++));
do
echo "array[x]"
done
    
por sabyasachi kar 11.11.2014 / 07:23

2 respostas

2

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
    
por 11.11.2014 / 07:29
0

! bin / bash

n = 2 array = ("CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl") para ((x = 0; x < = n-1; x ++)); Faz     echo "$ {array [x]}" feito

Obrigado @john pela ajuda que eu editei e recebi a saída correta, trabalhando agora:)

    
por 11.11.2014 / 08:23

Tags