如何在bash中循环每个变量一次?
我尝试了两个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发布于 2018-05-03 12:53:31
我假设您的列表存储在其他地方;否则,解决方案将是从此处的适当文档中读取:
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发布于 2018-05-03 13:04:39
$ is=( 4k 1m 1m )
$ js=( 1m 2m 4m )
$ paste <(printf '%s\n' "${is[@]}") <(printf '%s\n' "${js[@]}")
4k 1m
1m 2m
1m 4mhttps://stackoverflow.com/questions/50155500
复制相似问题