루프에서 두 개의 변수를 사용하는 방법

루프에서 두 개의 변수를 사용하는 방법

두 개의 루프가 있지만 함께 넣을 수 있는지 모르겠습니다.

먼저 동일한 샘플에서 두 개의 서로 다른 ID를 병합합니다.

samples="sample01 sample02 sample03"
for s in ${samples}
do
    cat ${s}_id1.txt ${s}_id2.txt > ${s}_id12.txt
done

이를 통해 19-41 범위에서 내 샘플.txt의 고유한 데이터 수를 계산하고 결과를 count.txt에 넣습니다.

for ((t=17, i=1; t<43; t=t+2, i++))
do 
    echo "[$i] Iteration - t = $t"`
    unique.py -o count.txt -t $t sample.txt
done

$t내가 원하는 것은 ${s}각 샘플_id12.txt 요소에 대해 다른 값을 입력하는 것입니다. 이 같은:

samples="sample01 sample02 sample03"
for s in ${samples} ¿counter?
do
    cat ${s}_id1.txt ${s}_id2.txt > ${s}_id12.txt
    unique.py -o count.txt -t $t ${s}_id12.txt
    rm ${s}_id12.txt
done

답변1

중첩 루프 예

samples="sample01 sample02 sample03"
for s in ${samples}
do
    cat ${s}_id1.txt ${s}_id2.txt > ${s}_id12.txt
    for ((t=17, i=1; t<43; t=t+2, i++))
    do 
        echo "[$i] Iteration - t = $t"
        unique.py -o count.txt -t $t ${s}_id12.txt
    done
done

답변2

for ((t=17; t<43; t=t+2))
do 
    samples="sample01 sample02 sample03"
    for s in ${samples}
    do
        cat ${s}_id1.txt ${s}_id2.txt > ${s}_id12.txt
        unique.py -o count.txt -t $t ${s}_id12.txt
    done
done

이렇게 하면 파일 t의 17-41 사이의 모든 파일을 얻을 수 있습니다( count.txt각 샘플 파일의 각 값에 해당하는 값 unique.py으로 결과를 덮어씁니다 t).

sample01_id12.txt 
sample02_id12.txt
sample03_id12.txt

관련 정보