for 루프는 파일의 n번째 위치를 반복합니다.

for 루프는 파일의 n번째 위치를 반복합니다.

유닉스의 for 루프에서 n번째 파일을 반복하는 방법은 무엇입니까? 다음은 성공하지 못한 채 시도한 일부 코드입니다.

#!/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

답변1

배열을 반복하는 두 가지 방법은 다음과 같습니다.

#!/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

선택한 항목 순환

이 스크립트를 사용하면 처리할 배열 요소를 명령줄에서 지정할 수 있습니다.

#!/bin/bash
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )

for x in "$@"
do
    echo "${array[x]}"
done

처음 두 개는 반복하고 세 번째는 건너뛰고 싶다고 가정해 보겠습니다. (0 기반 인덱싱으로 인해 bash처음 두 개는 숫자 0과 숫자 1입니다.) 다음을 사용하십시오.

$ bash script.sh 0 1
CTL_MLPOSDTLP1_1.ctl
CTL_MLPOSDTLP1_2.ctl

세 번째 항목을 실행하세요.

$ bash s.sh 2
CTL_MLPOSDTLP1_3.ctl

0에서 까지 반복n-1

for ((x=0; x<n; x++));
do
    echo "${array[x]}"
done

답변2

#!bin/bash
n=2
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )
for ((x=0; x<=n-1; x++));
do
    echo "${array[x]}"
done

편집하고 올바른 출력을 얻을 수 있도록 도와준 @john에게 감사드립니다. :)

관련 정보