次の問題に対する解決策が必要です。
次の形式で数値を印刷するシェルプログラムを作成します。 使用 しかし、または~までループで次のプログラムを実行します。
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つのループを使用したい場合は、中括弧拡張を使用して内部行を再構築してください。
答え2
width=4
max=9
decr=$(($width-1))
for w in $(seq $(($max-$decr)))
do
seq -s' ' $w $(($w+$decr))
done
答え3
単純なネストループを使用して、幅と最大変数なしでこのコードを書くことはできますか?
次のように:-
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