使用 expr 进行算术运算

use*_*924 2 shell-script quoting expr

我正在做添加操作

#!/bin/sh
a=10
b=20
c='expr $a + $b'
echo "$c"
echo "$a"
echo "$b"
Run Code Online (Sandbox Code Playgroud)

但它显示输出为

expr $a + $b
10
20
Run Code Online (Sandbox Code Playgroud)

expr 有什么问题

Tho*_*key 7

您的示例使用了错误的引号类型:

a=10 b=20 c='expr $a + $b' echo "$c" echo "$a" echo "$b"
Run Code Online (Sandbox Code Playgroud)

这应该是(作为开始):

a=10
b=20
c=`expr $a + $b`
echo "$c"
echo "$a"
echo "$b"
Run Code Online (Sandbox Code Playgroud)

但更具可读性:

a=10
b=20
c=$(expr $a + $b)
echo "$c"
echo "$a"
echo "$b"
Run Code Online (Sandbox Code Playgroud)

如果要将所有这些语句放在一行中,请用分号分隔它们:

a=10; b=20; c=$(expr $a + $b); echo "$c"; echo "$a"; echo "$b"
Run Code Online (Sandbox Code Playgroud)

  • 一些程序(不)有助于翻译引号。在 Microsoft Word 中,该功能称为智能引号。 (4认同)
  • @user183924 那些应该是反勾号,就像大多数键盘上 ~ 下的字符一样,但看起来很像单引号,所以如果你不知道要寻找什么,即使其他东西“没有帮助”翻译它们我们的眼睛经常会,这是托马斯在这里展示的`$()`语法的部分原因 (2认同)