我正在尝试打印嵌套for循环的结果一次,但我得到循环中各种组合的结果。
这是我的代码
for run in 1 2
do
for value in 3000 5000 1000
do
for percent in 30 40 50
do
echo "${percent}percent of ${value}"
done
done
done
我得到以下输出:
for run1:30percent of 3000
for run1:40percent of 3000
for run1:50percent of 3000
for run1:30percent of 5000
for run1:40percent of 5000
for run1:50percent of 5000
for run1:30percent of 1000
for run1:40percent of 1000
for run1:50percent of 1000
for run2:30percent of 3000
for run2:40percent of 3000
for run2:50percent of 3000
for run2:30percent of 5000
for run2:40percent of 5000
for run2:50percent of 5000
for run2:30percent of 1000
for run2:40percent of 1000
for run2:50percent of 1000
我想将输出打印为
for run1:30percent of 3000
for run1:40percent of 5000
for run1:50percent of 1000
for run2:30percent of 3000
for run2:40percent of 5000
for run2:50percent of 1000
答案 0 :(得分:2)
这不是循环如何运作。
你可能想要使用两个数组和一个从0到${#array}
的循环,然后使用循环控制变量来索引每个并行循环中的正确条目。
values=(3000 5000 1000)
percents=(30 40 50)
for ((i=0; i<=${#values}; i++)); do
echo "${percents[$i]}percent of ${value[$i]}"
done
答案 1 :(得分:1)
for run in 1 2; do
for pair in 30:3000 40:4000 50:1000; do
IFS=: read percent value <<< "$pair"
echo "for run${run}:${percent}percent of ${value}"
done
done
输出:
for run1:30percent of 3000
for run1:40percent of 4000
for run1:50percent of 1000
for run2:30percent of 3000
for run2:40percent of 4000
for run2:50percent of 1000
答案 2 :(得分:0)
你不需要第三个for循环。只需将第三个循环的数据存储在一个数组中,然后在第二个for循环后直接打印
答案 3 :(得分:0)
好吧,既然你没有说明你实际在做什么:
for run in 1 2; do
for i in {1..3}; do
echo "for run$run: $(( (i + 2) * 10 ))percent of $((i * 2000 % 6000 + 1000))"
done
done
Teehee。