シェルスクリプトを使ってみる②

概要

先回はシェルスクリプトの作り方とCRONで定期的に実行する確認をしました。今回はシエルスクリプトの中のプログラミングのところを勉強していきたいと思います。

円周・円の面積の計算

(1)概要
下図の通り、今回作成したシェルスクリプトは円の半径を入力し、面積と演習を求めるものと “for” ループを使って連続的に半径1~10の面積と演習を求める処理を行いました。

(2)シェルスクリプト
“vim” エディターで編集後のシェルスクリプトは下図の通りです。

上図のテキストも次に残します。

#!/bin/bash

echo -e "\n"
echo -n "◆円の半径入力 : "
read -p "" rds

pi_c=3.14                            #円周率
area_circle=$rds*$rds*$pi_c          #円面積
circumference_circle=2*$rds*$pi_c    #円周

echo -e "\n"
echo -n "◆円の面積①    : "
echo "scale=2; $rds*$rds*$pi_c" | bc

echo -n "◆円の面積②    : "
echo "scale=2; $area_circle" | bc

echo -n "◆円周         : "
echo "scale=2; $circumference_circle" | bc
echo -e "\n"

#ループ内で半径を変化させる
for i in `seq 1 10` ; do
     area_c=$i*$i*$pi_c
     cc_frn=2*$i*$pi_c

     echo -n "◆円の半径 : "
     echo -n `echo "$i"`
     echo -n "    ◆円の面積 : "
     echo -n `echo "scale=2; $area_c" | bc`
     echo -n "    ◆円周 : "
     echo "scale=2; $cc_frn" | bc
     #echo -e "\n"
done

echo -e "\n"

exit 0

私自身が判りにくかった点をメモしておきます。理解は出来ていませんが、使い方に少し慣れてきたというところです。

① 少数の取り扱い
行番13,16 ・・・ にある様に少数演算は、 “bc” コマンドを使う様です。行番13例では、「echo “scale=2; $rds*$rds*$pi_c” 」の結果を  “|”  (パイプ)を使って、“bc” コマンドに引き渡し演算処理します。“scale” は、“bc” コマンドで演算処理する際の小数点以下の桁数を指定しています。
② for ループ (繰り返し処理)
馴染みのある “for ~ next” 処理とは少し違っていました。
次の形式で記載し、リストは必ずしも連続した数値である必要はありません。但し、今回の行番23の例は、`seq 1 10` によって、変数が  1~10に連続的に変化し処理します。
for 変数 in リスト; do
処理
done

 

まとめ

慣れていないからなのかもしれませんが、少し判りにくいと感じました。次回は分岐処理等使ってみようと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です