极客教程
2016-06-10 09:46
#!/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,只在加法处有输出
2,if [ "$ope"=='+' ] 判断符两边需要有空格
shell编程之条件判断与流程控制
35507 学习 · 139 问题
相似问题