请问:错误操作符时(输入2,a,2),为什么计算器脚本进不去第三个判断的else分支(目前至允许加法运算);单引号试过,转义加号也不行,奔溃啦

来源:4-2 shell多分支if语句例:计算器

0_菇凉将我作甚_0

2019-09-05 16:15

#!/bin/bash

#计算器脚本


read -t 30 -p "please input num1:" num1

read -t 30 -p "please input opt:" opt

read -t 30 -p "please input num2:" num2


#判断输入的内容是否为空,-z表示是否为空

if [ -z "$num1" -o -z "$num2" -o -z "$opt" ]

        then

        echo "null input"

        exit 10

fi


#判断num1与num2是否为纯数字

        #使用sed将数字替换为空

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

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

        #若test1或test2不为空,则证明num1或num2不是纯数字

if [ -n "$test1" -o -n "$test2" ]

        then

        echo "wrong num"

        exit 11

fi


#这里是第三个判断语句,判断操作符是否有效

if [ "$opt"=="+" ]

        then

        echo "$num1 $opt $num2 = $(($num1 $opt $num2))"

else

        echo "wrong opt"

        exit 12

fi


写回答 关注

1回答

  • 0_菇凉将我作甚_0
    2019-09-05 16:47:50

    好吧,我知错了 ==两边也要用空格

shell编程之条件判断与流程控制

Linux shell实用案例学习,一定会使你Linux运维能力再次提高

35507 学习 · 139 问题

查看课程

相似问题