パート 1) 私のスクリプトでは、コマンド ライン オプション -r、-c、および -t をそれぞれ四角形、円、および台形に使用できます。長方形オプションには、長さと幅の 2 つの引数が必要です。circle オプションには、1 つの引数 (半径) が必要です。台形オプションには、高さと各平行底辺の 3 つの引数が必要です。パート 2) スクリプトはオプション -f を許可します。このオプションを -r、-c、または -t と組み合わせて使用すると、各オプションは 1 つの引数 (入力ファイルの名前) を取ります。入力値は入力ファイルから一度に 1 行ずつ読み取られ、その領域が stdout に出力されます。–1 の値が読み取られると、スクリプトは終了する必要があります。
-1 が読み込まれたときに終了するスクリプトを除いて、パート 1 とパート 2 の両方を完了しました。2番目の部分でやりたいことは、入力ファイルを与えるときに長方形に対して、そのファイルの各行に2つの値があるかどうかを確認することです。2 つの値がない場合は、「ファイルに無効なデータ セットがあります」とエコーします。circle と同様に、入力ファイルの各行と台形 3 で 1 より大きい値または小さい値を持つものは受け入れてはなりません。
filename=$OPTARG;;
while read -a line
do
if (( $choice == 1 ))
then
Area=`echo "scale=3; ${line[0]}*${line[1]}" | bc`;
echo "Area of the rectangle is $Area";
fi
if (( $choice == 2 ))
then
Pi=3.1416
Area=`echo "scale=3; ${line[0]*$line[0]}*$Pi" | bc`;
echo "Area of the circle is $Area";
fi
if (( $choice == 3 ))
then
Area=`echo "scale=3; (${line[0]}+${line[1]})/2*${line[2]}" | bc`;
echo "Area of the trapezoid is $Area";
fi
done < "$filename"