使用 expr 将两个数字相加

使用 expr 将两个数字相加

我正在学习 Shell 脚本,以获得目前正在攻读的 IT 文凭。我正在尝试编写一个小脚本,将两个数字相加,如我们提供的教程之一所示。

echo "Enter two numbers"
read num1 num2
sum = 'expr $num1 + $num2'
echo "The sum is = $sum"

但是,当我授予它执行权限并运行脚本时,它会出现此错误。

sum: =. No such file or directory.
sum: expr $num1 + $num2: No such file or directory

在此输入图像描述

我尝试在 Ubuntu 和 Fedora 上运行它,但出现同样的错误。谁能告诉我我在这里缺少什么吗?

答案1

首先你必须去掉作业的空格,例如

sum='expr $num1 + $num2'

那么你必须更改'为 a`甚至更好$()

sum=$(expr "$num1" + "$num2")

除了使用之外,expr您还可以直接在 shell 中进行计算:

sum=$((num1 + num2))

答案2

您可能将行中的反引号误读为单引号:

sum = 'expr $num1 + $num2'

格雷格的维基使用$(...)代替。

这按预期工作:

sum=$(expr "$num1" + "$num2")

另请注意,等号(变量赋值)周围没有间隙。

答案3

expr是一个外部程序使用伯恩外壳(即 sh)。 Bourne shell 最初没有任何执行简单算术的机制。它expr在反引号的帮助下使用外部程序。

反引号(`)实际上称为命令替换。命令替换是 shell 执行一组给定命令然后用其输出替换命令的机制。

sum=`expr $num1 + $num2`

巴什(bourne Again shell)它具有以下系统,它不会使用外部程序expr

sum=$((num1+num2))

如果我们想使用外部程序expr。我们有以下系统:

sum=$(expr $num1 + $num2)

相关内容