두 목록의 값이 두 중첩 루프에서 올바르게 처리되지 않습니다.

두 목록의 값이 두 중첩 루프에서 올바르게 처리되지 않습니다.

두 개의 목록에 포함된 일부 값을 두 개의 중첩된 for 루프 내부의 간단한 에코에 전달하려고 합니다(에코는 내부 루프 내부에서 생성되는 내용을 확인하는 데 사용됩니다). 그러나 결과는 예상했던 것과 달랐습니다. 정말 지침이 필요해요!

bash 쉘을 사용하십시오. 이것은 스니펫입니다:


a_list="0.05 0.10"
b_list="120.0 130.0"
c=44
x=555.0
for a in $a_list
do
   for b in $b_list
       do
           echo $x $a $b $c
       done
done

나는 이것을 기대한다:

555.0 0.05 120.0 44
555.0 0.05 130.0 44
555.0 0.10 120.0 44
555.0 0.10 130.0 44

하지만 나는 그것을 이해합니다:

555.0 0.05 120.0 44
 44.0 0.05 130.0
555.0 0.10 120.0 44
 44.0 0.10 130.0

2행과 4행이 잘못되었습니다. 44가 먼저 에코되고 555.0을 덮어쓰는 것 같습니다. 목록의 값을 for 루프에 직접 로드하면 제대로 작동합니다. 이와 같이:


c=44
x=555.0
for a in 0.05 0.10
do
   for b in 120.0 130.0
       do
           echo $x $a $b $c
       done
done

도움과 통찰력을 주셔서 감사합니다!

답변1

이전에 언급한 것처럼 코드가 이미 작동하지만 쉘 배열을 사용해 볼 수도 있습니다.

a_list=(0.05 0.10)
b_list=(120.0 130.0)
c=44
x=555.0
for a in "${a_list[@]}"
do
   for b in "${b_list[@]}"
       do
           echo "$x $a $b $c"
       done
done

관련 정보