はじめに
オープン系COBOLに欠かせないのがLinuxの知識であったり、シェルの知識であったりします。
今回はシェルスクリプトを使って、A×B=Cの形で九九表を表示させていたいと思います。
早速bashで作ってみます。
#!/bin/bash
#九九表を表示する。
sum=0
for ((i = 1; i <= 9; i++))
do
for ((j = 1; j <= 9; j++))
do
((sum = i * j))
printf '%d×%d=%2d' "$i" "$j" "$sum"
echo -n ' '
done
if ((j = 9))
then
echo # 改行する
else
continue
fi
done
bashでは算術式を使ってforでループさせて、計算した結果をprintfを使って形を整えます。
'%d×%d=%2d'の表記について九九なので%d×%dの部分は1桁でいいでしょう。
=%2dも2桁確保することによって1桁でも列で見た時に形が整うことが出来ます。
最後、改行なしで1文字空文字を入れて整形するためecho -n ' 'を用いています。
ここでecho -e ' \c'にしても同様な挙動を示します。
jのループを1回抜けたらA×9=Cの段階まで行ったら改行します。
それによって横に1の段、2の段と段を行で表示させることが出来ます。
$ ./pro2008A.sh
1×1= 1 1×2= 2 1×3= 3 1×4= 4 1×5= 5 1×6= 6 1×7= 7 1×8= 8 1×9= 9
2×1= 2 2×2= 4 2×3= 6 2×4= 8 2×5=10 2×6=12 2×7=14 2×8=16 2×9=18
3×1= 3 3×2= 6 3×3= 9 3×4=12 3×5=15 3×6=18 3×7=21 3×8=24 3×9=27
4×1= 4 4×2= 8 4×3=12 4×4=16 4×5=20 4×6=24 4×7=28 4×8=32 4×9=36
5×1= 5 5×2=10 5×3=15 5×4=20 5×5=25 5×6=30 5×7=35 5×8=40 5×9=45
6×1= 6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36 6×7=42 6×8=48 6×9=54
7×1= 7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49 7×8=56 7×9=63
8×1= 8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64 8×9=72
9×1= 9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
実行結果見ると列と行が乱れないで表示されたことがお分かりいただけたと思います。
shでシェルスクリプトを作ったらこうなります。
#!/bin/sh
#九九表を表示する。
sum=0
for i in $(seq 1 9)
do
for j in $(seq 1 9)
do
sum=$(expr "$i" \* "$j")
printf '%d×%d=%2d' "$i" "$j" "$sum"
echo -n ' '
done
if [ "$j" = 9 ]
then
echo # 改行する
else
continue
fi
done
まずfor文はいくつか別解的書き方がいくつかあって
for i in 1 2 3 4 5 6 7 8 9
の様に書く事ができますし、
バッククォーテーションとseqコマンドを使って
for i in `seq 1 9`
の様に書く事が出来ます。
for i in $(seq 1 9)
が一番スマートな書き方に思えたのでこちらを採用しました.
また、exprコマンドで掛け算する時は*の前に\をつけるのを忘れないようにしましょう。
shなので算術式は使えずexprコマンドで計算する形になります。
$ ./pro2008B.sh
1×1= 1 1×2= 2 1×3= 3 1×4= 4 1×5= 5 1×6= 6 1×7= 7 1×8= 8 1×9= 9
2×1= 2 2×2= 4 2×3= 6 2×4= 8 2×5=10 2×6=12 2×7=14 2×8=16 2×9=18
3×1= 3 3×2= 6 3×3= 9 3×4=12 3×5=15 3×6=18 3×7=21 3×8=24 3×9=27
4×1= 4 4×2= 8 4×3=12 4×4=16 4×5=20 4×6=24 4×7=28 4×8=32 4×9=36
5×1= 5 5×2=10 5×3=15 5×4=20 5×5=25 5×6=30 5×7=35 5×8=40 5×9=45
6×1= 6 6×2=12 6×3=18 6×4=24 6×5=30 6×6=36 6×7=42 6×8=48 6×9=54
7×1= 7 7×2=14 7×3=21 7×4=28 7×5=35 7×6=42 7×7=49 7×8=56 7×9=63
8×1= 8 8×2=16 8×3=24 8×4=32 8×5=40 8×6=48 8×7=56 8×8=64 8×9=72
9×1= 9 9×2=18 9×3=27 9×4=36 9×5=45 9×6=54 9×7=63 9×8=72 9×9=81
shでも実行結果が正しく出たのが確認出来ました。
最後に
今回、九九表を行うスクリプトを紹介しました。
最後までご覧いただきありがとうございました!