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

代码不知哪里有问题

#!/bin/bash

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

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

#通过read命令接收要计算的数值,并赋予变量num1和num2

read -t 30 -p "Please input a operator: " ope

#通过read命令接收要计算的符号,并赋予变量ope


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

#第一层判断,用来判断num1、num2和ope中都有值

then

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

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

#定义变量test1和test2的值为$(命令)的结果

#后续命令作用是,把变量test1的值替换为空,如果能替换为空,证明num1的值为数字

#如果不能替换为空,证明num1的值为非数字,我们使用这种方法判断变量num1的值为数字

#用同样的方法测试test2变量


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

#第二层判断,用来判断num1和num2为数值

#如果变量test1和test2的值为空,则证明num1和num2是数字

then

#如果test1和test2是数字,则执行以下命令

if [ "$ope"=='+' ]

#第三层判断用来确认运算符

#测试变量$ope中是什么运算符

then

sum=$(($num1+$num2))

echo $sum

elif [ "$ope"=='-' ]

then

sum=$(($num1-$num2))

elif [ "$ope"=='*' ]

then

sum=$(($num1*$num2))

elif [ "$ope"=='/']

then

sum=$(($num1/$num2))

else

echo "Please enter a valid symbol"

#如果运算符不匹配,提示输入有效的符号

exit 10

#并退出程序,返回错误代码 10

fi

else

#如果test1和test2不是数值

echo "Please enter a valid value"

#则提示输入有效的数值

exit 11

fi

else

echo "qing shuru neirong"

exit 12

fi



帮忙看一下,为什么我输入乘法和除法,最后的结果都是加法的结果,不清楚哪里出问题了

正在回答

1 回答

有两个问题:

1,只在加法处有输出

2,if [ "$ope"=='+' ]  判断符两边需要有空格

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

极客教程 提问者

非常感谢!
2016-06-10 回复 有任何疑惑可以回复我~
#2

极客教程 提问者

shell 中很多都需要有空格
2016-06-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

代码不知哪里有问题

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