带有循环、Until 和 While 的 Shell 编程问题

带有循环、Until 和 While 的 Shell 编程问题

我需要以下问题的解决方案:

编写一个 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

相关内容