0

第 1 部分)我的脚本允许命令行选项 -r、-c 和 -t 分别用于矩形、圆形和梯形。矩形选项需要两个参数,长度和宽度。circle 选项需要一个参数,即半径。梯形选项需要三个参数,高度和每个平行底。第 2 部分)脚本允许选项 -f。当此选项与 -r、-c 或 -t 一起使用时,每个选项都有一个参数,即输入文件的名称。输入值将一次从输入文件中读取一行,并将区域打印到标准输出。当读取值 –1 时脚本应该终止。

我已经完成了第 1 部分和第 2 部分,但脚本在读取 -1 时终止。我想在第二部分做的是矩形,当我给它一个输入文件时,是检查该文件是否在每一行中有 2 个值。如果它没有 2 个值,则回显“文件具有无效的数据集”。与圆形相同,它不应接受在输入文件的每一行和梯形 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

只需 grep 文件中的 -1 并回显 $?。如果 -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 回答