linux - 在 shell 脚本中与 expr 相乘

标签 linux bash shell unix expr

我正在制作一个基本的计算器,用于加减乘除。

加法有效,但乘法无效。当我尝试相乘时,我得到“您没有正确运行程序”的响应:

$ ./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/

相关文章:

php echo 无法打印

ios - Xcode - 在构建阶段从 bash 脚本设置/添加环境变量

python - 为 virtualenv 和 pip 维护不同的需求文件

linux - 从 bash 脚本初始化 Mininet 拓扑

linux - 在 Linux 中编写由多个文件组成的环回设备

c - 在调用 pthread_join 之前到达 pthread_exit()

linux - NASM 调用标签未被调用

linux - 为什么要编写一个脚本来检查 Linux 中是否安装了某些软件包,如果没有则安装它?

Bash 相当于 Tcsh 的 ESC-p 以跳转到以您目前输入的内容开头的命令

java - 通过 Maven 为 Node.js 项目运行 "npm install"+ 测试脚本