ループ、Until、Whileを使用したシェルプログラミングの質問

ループ、Until、Whileを使用したシェルプログラミングの質問

次の問題に対する解決策が必要です。

次の形式で数値を印刷するシェルプログラムを作成します。 使用 しかし、または~までループで次のプログラムを実行します。

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

2つのループは必要ないので、bash+中括弧拡張で十分です。

i=0; width=4; max=9
until [ $((i++)) -ge $((max-width+1)) ]; do
    eval echo {$i..$((i+width-1))}
done

幅は0より大きく、開始点(負の値を含む)に対して機能する必要があります。

2つのループを使用したい場合は、中括弧拡張を使用して内部行を再構築してください。

おすすめ記事