请问如何读取“9 * 8”中的“*”字符?

chg_yz 2011-12-12 06:54:00
写了一个计算器脚本,在计算乘法的时候始终报错。原因在于输入“9 * 8”字符时,无法用op=`echo $exp | cut -d ' ' -f 2`读取“*”,读取的结果是“aplusb”。但是做加减除(+ - /)运算则能够正确读取运算符。为何?求解。
#/bin/bash
#由用户输入计算表达式,程序给出计算结果

#1.提示用户该程序的功能
echo "由用户输入计算表达式,程序给出计算结果"
#2.用户输入操作数与操作符
read -p "开始新的计算吗?" yes
while [ "$yes" == "y" ]
do
read -p "请输入计算表达式(如8 + 9):" exp
num1=`echo $exp | cut -d ' ' -f 1`
num2=`echo $exp | cut -d ' ' -f 3`
op=`echo $exp | cut -d ' ' -f 2`
echo $op #结果为aplusb
#3.根据用户输入的操作符,做相应的计算
if [ "$op" == "+" ]; then
sum=$(($num1+$num2)) && echo "$num1 $op $num2 = $sum"
elif [ "$op" == "-" ]; then
sum=$(($num1-$num2)) && echo "$num1 $op $num2 = $sum"
elif [ "$op" == "*" ]; then
sum=$(($num1*$num2)) && echo "$num1 $op $num2 = $sum"
elif [ "$op" == "/" ]; then
sum=$(($num1/$num2)) && echo "$num1 $op $num2 = $sum"
else
echo "非法的操作符"
fi
read -p "开始新的计算吗?" yes
done
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chg_yz 2011-12-13
  • 打赏
  • 举报
回复
感谢xiangliangyu2008的帮助,问题解决了:)
向良玉 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chg_yz 的回复:]

引用 2 楼 xiangliangyu2008 的回复:

引用 1 楼 xiangliangyu2008 的回复:

Python code

num1=`echo "$exp" | cut -d ' ' -f 1`
num2=`echo "$exp" | cut -d ' ' -f 3`
op=`echo "$exp" | cut -d ' ' -f 2`


你……
……
[/Quote]


#/bin/bash
read -p "start a new ?" yes
while [ "$yes" == "y" ]
do
read -p "input": exp
num1=`echo "$exp" | cut -d ' ' -f 1`
num2=`echo "$exp" | cut -d ' ' -f 3`
op=`echo "$exp" | cut -d ' ' -f 2`
echo $op
if [ "$op" == "+" ]; then
sum=$(($num1+$num2)) && echo "$num1 $op $num2 = $sum"
elif [ "$op" == "-" ]; then
sum=$(($num1-$num2)) && echo "$num1 $op $num2 = $sum"
elif [ "$op" == "*" ]; then
sum=$(($num1*$num2)) && echo "$num1 $op $num2 = $sum"
elif [ "$op" == "/" ]; then
sum=$(($num1/$num2)) && echo "$num1 $op $num2 = $sum"
else
echo "wrong input"
fi
read -p "start a new ?" yes
done
chg_yz 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiangliangyu2008 的回复:]

引用 1 楼 xiangliangyu2008 的回复:

Python code

num1=`echo "$exp" | cut -d ' ' -f 1`
num2=`echo "$exp" | cut -d ' ' -f 3`
op=`echo "$exp" | cut -d ' ' -f 2`


你……

汗、、、code里原来不能加颜色、、
"$exp"……
[/Quote]
改过了,但是更不对了。
向良玉 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiangliangyu2008 的回复:]

Python code

num1=`echo "$exp" | cut -d ' ' -f 1`
num2=`echo "$exp" | cut -d ' ' -f 3`
op=`echo "$exp" | cut -d ' ' -f 2`


你……
[/Quote]
汗、、、code里原来不能加颜色、、
"$exp" 改成这样就对了
向良玉 2011-12-12
  • 打赏
  • 举报
回复

num1=`echo "$exp" | cut -d ' ' -f 1`
num2=`echo "$exp" | cut -d ' ' -f 3`
op=`echo "$exp" | cut -d ' ' -f 2`

你的变量加上双引号就行了
否则读取的是*,运行了echo *,读取的就是脚本目录下的现有文件名了,所以获取不到你想要的*

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧