【发布时间】:2019-03-17 13:15:55
【问题描述】:
我已经制作了以下 shell 代码:
declare -i x=3;
declare -i y=8;
declare -i z=6;
for r1 in 0.80 0.90
do
for r2 in 0.80 0.90
do
for (( i=0; i <= 48; i++))
do
origin=$((x + z*i))
end=$((y + z*i))
rm -r ${name}_${r1}_${r2}.gnu
echo "beginrow=$origin" > ${name}_${r1}_${r2}.gnu
echo "endrow=$end" >> ${name}_${r1}_${r2}.gnu
echo "r1=$r1" >> ${name}_${r1}_${r2}.gnu
echo "r2=$r2" >> ${name}_${r1}_${r2}.gnu
done
done
done
我希望它只为每对 r1 和 r2 变量执行第三个循环的一个步骤。相反,当我运行代码时,它会为每对 r1 和 r2 变量执行第三个循环的完整循环。我应该改变什么?
【问题讨论】:
-
你想让 0 到 48 之间的 i 循环运行一次吗?您可以删除循环并说
i=20(范围内的随机值)吗?或者将i <= 48替换为i < ${loopcount}并以loopcount=1开头? -
您好,理想情况下我想要以下输出:r1=0.80 r2=0.80 origin=3 end=8|||||| r1=0.80 r2=0.90 origin=9 end=14 以此类推。然而,我目前遇到的问题是,对于每个 r1 和 r2 集合,第三个循环打印所有可能的“起点”和“终点”值。
-
你在哪里将内容分配给变量
name? -
缩进你的代码。
-
实际代码比这个长得多,但问题与代码的显示部分有关(变量 {name} 在第一行中分配,但这并不重要) .