为了账号安全,请及时绑定邮箱和手机立即绑定

如果运算符输入为空,为什么会返回第一层判断失败的错误?

#!/bin/bash


read -t 30 -p "请输入一个数字:" num1

read -t 30 -p "请输入一个数字:" num2

read -t 30 -p "请输入一个运算符:" ope

#通过read命令接受要输入的参数

if [ -n  "$num1" -a -n "$num2" -a -n "$ope" ]

#第一层判断是否有值

        then

        test1=$(echo $num1 | sed 's/[0-9]//g')

        test2=$(echo $num2 | sed 's/[0-9]//g')

#定义变量test1和test2的值。把变量test值替换为空。如果能替换

#则为数字

        if [ -z "$test1" -a -z "$test2" ]

#判断变量test1 2是否为空,为空证明 num1 num2是数字

                then

                        if [ -n -o "$ope" == '+' -o "$ope" == '-' -o "$ope" == '*' -o "$ope" == '/' -o ]

                        then

                        res=$(($num1$ope$num2))

                        else

#!/bin/bash


read -t 30 -p "请输入一个数字:" num1

read -t 30 -p "请输入一个数字:" num2

read -t 30 -p "请输入一个运算符:" ope

#通过read命令接受要输入的参数

if [ -n  "$num1" -a -n "$num2" -a -n "$ope" ]

#第一层判断是否有值

        then

        test1=$(echo $num1 | sed 's/[0-9]//g')

        test2=$(echo $num2 | sed 's/[0-9]//g')

#定义变量test1和test2的值。把变量test值替换为空。如果能替换

#则为数字

        if [ -z "$test1" -a -z "$test2" ]

#判断变量test1 2是否为空,为空证明 num1 num2是数字

                then

                if [ -n -o "$ope" == '+' -o "$ope" == '-' -o "$ope" == '*' -o "$ope" == '/' -o ]

                        then

                        res=$(($num1$ope$num2))

                else    

                        echo '输入的运算符有误'

                        exit 3

                fi      

        else

                        echo '输入的非数字,请重新输入'

                        exit 2

        fi

else

        echo '未输入,请重新输入'       

        exit 1

fi

        echo " $num1 $ope $num2 = $res "


正在回答

1 回答

知道了,第一个判断条件里有写-n“$ope”

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果运算符输入为空,为什么会返回第一层判断失败的错误?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信