유닉스의 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에게 감사드립니다. :)