我正在制作一个基本的计算器,用于加减乘除。
加法有效,但乘法无效。当我尝试相乘时,我得到“您没有正确运行程序”的响应:
$ ./calculator 4 + 5
9
$ ./calculator 4 * 5
You did not run the program correctly
Example: calculator 4 + 5
我在谷歌上四处搜索,找到了 \\*
代码,但仍然无效。有人可以为我提供解决方案或解释吗?
这是我的代码
#!/bin/bash
if [ $# != 3 ]; then
echo You did not run the program correctly
echo Example: calculator 4 + 5
exit 1
fi
if [ $2 = "+" ]; then
ANSWER=`expr $1 + $3`
echo $ANSWER
fi
if [ $2 = "*" ]; then
ANSWER=`expr $1 \\* $3`
echo $ANSWER
fi
exit 0
最佳答案
你的代码有很多问题。这是一个修复。 *
表示“当前目录下的所有文件”。要改为表示文字星号/乘法字符,您必须将其转义:
./calculator 3 \* 2
或
./calculator 3 "*" 2
您还必须双引号 "$2"
,否则 *
将再次开始表示“所有文件”:
#!/bin/bash
#Calculator
#if [ `id -u` != 0 ]; then
# echo "Only root may run this program." ; exit 1
#fi
if [ $# != 3 ]; then
echo "You did not run the program correctly"
echo "Example: calculator 4 + 5"
exit 1
fi
# Now do the math (note quotes)
if [ "$2" = "+" ]; then echo `expr $1 + $3`
elif [ "$2" = "-" ]; then echo `expr $1 - $3`
elif [ "$2" = "*" ]; then echo `expr $1 \* $3`
elif [ "$2" = "/" ]; then echo `expr $1 / $3`
fi
exit 0
关于linux - 在 shell 脚本中与 expr 相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218141/