代碼不知哪里有問(wèn)題
#!/bin/bash
read -t 30 -p "Please input num1: " num1
read -t 30 -p "Please input num2: " num2
#通過(guò)read命令接收要計(jì)算的數(shù)值,并賦予變量num1和num2
read -t 30 -p "Please input a operator: " ope
#通過(guò)read命令接收要計(jì)算的符號(hào),并賦予變量ope
if [ -n "$num1" -a -n "num2" -a -n "$ope" ]
#第一層判斷,用來(lái)判斷num1、num2和ope中都有值
then
test1=$(echo $num1 | sed 's/[0-9]//g')
test2=$(echo $num2 | sed 's/[0-9]//g')
#定義變量test1和test2的值為$(命令)的結(jié)果
#后續(xù)命令作用是,把變量test1的值替換為空,如果能替換為空,證明num1的值為數(shù)字
#如果不能替換為空,證明num1的值為非數(shù)字,我們使用這種方法判斷變量num1的值為數(shù)字
#用同樣的方法測(cè)試test2變量
if [ -z "$test1" -a -z "$test2" ]?
#第二層判斷,用來(lái)判斷num1和num2為數(shù)值
#如果變量test1和test2的值為空,則證明num1和num2是數(shù)字
then
#如果test1和test2是數(shù)字,則執(zhí)行以下命令
if [ "$ope"=='+' ]
#第三層判斷用來(lái)確認(rèn)運(yùn)算符
#測(cè)試變量$ope中是什么運(yùn)算符
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"
#如果運(yùn)算符不匹配,提示輸入有效的符號(hào)
exit 10
#并退出程序,返回錯(cuò)誤代碼 10
fi
else
#如果test1和test2不是數(shù)值
echo "Please enter a valid value"
#則提示輸入有效的數(shù)值
exit 11
fi
else
echo "qing shuru neirong"
exit 12
fi
幫忙看一下,為什么我輸入乘法和除法,最后的結(jié)果都是加法的結(jié)果,不清楚哪里出問(wèn)題了
2016-06-10
有兩個(gè)問(wèn)題:
1,只在加法處有輸出
2,if [ "$ope"=='+' ]? 判斷符兩邊需要有空格