両方のリストの値が両方のネストされたループで正しく処理されません。

両方のリストの値が両方のネストされたループで正しく処理されません。

2つのリストに含まれるいくつかの値を、2つの入れ子になった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

関連情報