我正在做一个基本的计算器来加,减,乘,除。
加法工作,但不是乘法。 当我尝试乘法时,我得到“你没有正确运行程序”的回应:
$ ./calculator 4 + 5 9 $ ./calculator 4 * 5 You did not run the program correctly Example: calculator 4 + 5
我search了谷歌,我find了\\*
代码,但仍然无法正常工作。 有人可以提供一个解决scheme或解释吗?
这是我的代码
#!/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
*
需要转义,因为它是shell语法中的一个特殊字符。 (如果没有转义,它将被扩展到当前目录中所有文件的列表)。 但是你只需要使用一个反斜杠来逃避它:
ANSWER=`expr $1 \* $3`