#!/bin/sh
echo "Welcome to our calculator"
echo "Please insert your two numbers"
echo "Number 1:"
read number1
echo "Number 2:"
read number2
echo "Please type (+,-,/,*) if you want to add or substract or
multiply or divide respectively: "
read operand
if [ $operand = '+' ]; then
echo `expr $number1 + $number2`
elif [ $operand = '-' ]; then
echo `expr $number1 - $number2`
elif [ $operand = '/' ]; then
echo `expr $number1 / $number2`
elif [ $operand = '*' ] ;then
echo `expr $number1 * $number2`
else
echo "Invalid Input"
fi
exit 0
我如何修复这个问题,但仍然能够保持if语句,因为我必须使用if语句专门为这个赋值,所以我不能使用循环或其他任何东西。提前谢谢你。
星号(*
)令牌在bash中有特殊的含义,它本身扩展为当前目录中所有非隐藏文件的列表。在您的示例中,这个扩展被传递给expr
命令,这没有任何意义。要将文字星号传递给命令,需要使用反斜杠()字符转义,如下所示:
echo `expr $number1 * $number2`
对于将来的调试,尝试用echo
替换expr
,以查看传递给命令的参数。