我需要以下问题的解决方案:
编写一个 shell 程序,按以下格式打印数字: 使用 尽管或者直到循环执行以下程序
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9
我编写的脚本使用的是直到循环。我有错误的地方还请大家指正:
#!/bin/bash
w=1
until [ $w -le 9 ] ; do
until [ $w -eq 4 ] ; do
w=`expr $w + 1`
echo “$w”
done
echo “$w”
done
答案1
由于您使用bash
不需要两个循环,因此一个 + 大括号扩展就足够了:
i=0; width=4; max=9
until [ $((i++)) -ge $((max-width+1)) ]; do
eval echo {$i..$((i+width-1))}
done
应该适用于任何宽度 > 0 和起点(包括负值)。
如果您确实喜欢使用两个循环,只需用大括号扩展重写内线即可。
答案2
width=4
max=9
decr=$(($width-1))
for w in $(seq $(($max-$decr)))
do
seq -s' ' $w $(($w+$decr))
done
答案3
可以使用我的简单嵌套循环在没有 width 和 max 变量的情况下编写此代码吗?
如下 :-
w=1
until [ $w -le 9 ] ; do
until [ $w -eq 4 ] ; do
w=`expr $w + 1`
echo “$w”
done
echo “$w”
done
答案4
b=1
while [ $b -le 6 ]
do
echo -n $b `expr $b + 1` `expr $b + 2` `expr $b + 3`
echo
b=`expr $b +1`
done