如何在bash中对每个变量进行一次for循环?
我已经尝试了两个for循环,但是它正在循环给定的变量和循环中的其他第二个变量!
尝试

for i in 4k 1m 1m
do
   for j in 1m 2m 4m
   do
   echo $i $j
   done
done

输出
4k 1m
4k 2m
4k 4m
1m 1m
1m 2m
1m 4m
1m 1m
1m 2m
1m 4m

期望输出
4k 1m
1m 1m
1m 2m

最佳答案

我假设您的列表存储在其他地方;否则,解决方案是从适当的here文档中读取:

while read -r i j; do
  echo "$i" "$j"
done <<EOF
4k 1m
1m 1m
1m 2m
EOF

但是假设你有list1=( 4k 1m 1m)list2=(1m 2m 4m)bash并没有提供一种特别干净的方法将两个数组“压缩”在一起。最好的方法是假设两个列表都有相同的索引,并在这些索引上迭代:
list1=(4k 1m 1m)
list2=(1m 2m 4m)
for k in "${!list1[@]}"; do
  i=${list1[k]}
  j=${list2[k]}
  echo "$i" "$j"
done

关于linux - 在bash中循环每个变量一次,而不在第二个循环中循环其他变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50155500/

10-10 17:48