0

パート 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"
4

1 に答える 1

0

ファイルで -1 を grep し、$? をエコーし​​ます。これは、-1 が存在する場合はゼロになり、-1 が存在しない場合は 1 になります。

番号を確認するには。渡された値のうち、次のことを行います

SEPERATOR=" ";
#Assumed that seperator is space in your case
#remove all ending spaces
sed -i 's/ *$//g' $filename
#take the count of columns seperated by spaces
cat $filename | grep -o " " | wc -l
#this value +1 gives you the total values in the file

これが役立つことを願っています

于 2012-11-07T06:51:57.493 に答える