如何在 Linux 中使用 expr 计算表达式
在终端中用 expr 表达您的计算。
要点
- expr 命令可以计算表达式并输出相应的值。您可以使用它来执行算术计算、比较和字符串操作。
- 使用 expr 命令,您可以搜索文本中的特定模式、验证用户输入,甚至可以根据定义的模式替换文本。
- expr 命令还可以使用字符串函数来操作字符串,例如查找长度、比较字符串和提取子字符串。
想在Linux中做一些简单的计算吗?只需使用 expr 命令即可。该命令可以执行各种操作,例如计算表达式、提取子字符串、比较字符串等。使用 expr,您可以对两个数字进行加、减、乘或除,并将答案作为输出。
expr 命令
expr 是一个可以根据您提供的表达式执行计算和操作字符串的工具。使用 expr 命令,您可以对整数和字符串执行各种操作,例如比较值或使用正则表达式查找特定模式。
您可以将多个表达式作为参数传递给 expr,并用空格分隔。它不仅计算表达式,而且还在终端上显示其相应的输出。 expr 命令在 Bash 终端和 shell 脚本中都有效。
在不离开终端的情况下操作数据或进行计算时,expr 命令非常方便。但是,您需要注意表达式的语法和顺序,否则命令将失败并显示错误消息。
expr 命令的语法为:
expr expression
...其中表达式可以是参数和运算符的组合。例如,下面给出的表达式计算 arg1 和 arg2 之间的运算并显示结果:
expr arg1 operator arg2
参数可以是数字或字符串,具体取决于运算符。运算符可以是算术运算符、关系运算符、字符串相关运算符或逻辑运算符。它是指定要执行的操作的符号。例如,对于整数,您可以使用 +、-、*、/ 和 % 等运算符。
对于字符串,您可以使用正则表达式和字符集来查找匹配项和索引。您还可以使用括号对表达式进行分组,并使用反斜杠来转义特殊字符。
expr 命令选项
虽然 expr 没有传统的命令行选项,但它提供了用于算术、字符串操作和比较的多功能运算符。此外,您可以使用 --help 选项显示 expr 的帮助页面,其中解释了其语法、功能和示例:
expr --help
要检查 expr 命令版本,请运行:
expr --version
此选项显示 expr 的版本号、源代码、许可证和作者。
使用 expr 执行算术运算
要使用 expr 命令进行基本算术运算,请编写命令 expr,后跟一个空格。然后,写下您要计算的表达式。该表达式是整数和+、-、*、/等运算符的组合。确保用空格字符分隔表达式中的每个标记(整数或运算符)。
例如,如果您想使用 expr 求出 15 和 12 的和,您可以编写:
expr 15 + 12
同样,您可以使用 expr 命令执行其他算术运算,例如减法、乘法和除法。让我们使用 expr 命令计算一些表达式:
expr 15 - 12
expr 15 \* 5
expr 10 / 2
您需要使用反斜杠 (\) 转义乘法 (*) 运算符,以避免 shell 扩展。否则,shell 将尝试将运算符 (*) 与当前目录中的文件名进行匹配,并将它们传递给 expr 命令,这将导致错误。
您还可以通过正确引用参数和运算符来阻止 shell 解释字符:
expr "5" "*" "3"
用 expr 比较两个表达式
要使用 expr 命令比较两个表达式,可以使用逻辑运算符,例如 =、<、> 和 !=。如果看到命令输出 1,则条件为 true,否则为 false,并且返回值为零。
例如,要检查第一个参数是否等于第二个参数,我们使用=运算符:
expr 40 = 50
现在,让我们检查第一个参数是否小于另一个参数。为此,我们使用 < 运算符:
expr 40 \< 50
您还可以检查值是否不相等。为此,只需在两个参数值之间使用 != 运算符即可:
expr 45 \!= 55
这里,输出 1 表示 45 不等于 55。
这样,expr命令提供了一种简单有效的方法来比较数值。
与乘法 (*) 运算符一样,<、> 和 != 运算符也需要使用反斜杠 (\) 进行转义。否则,它们可能会被 shell 解释为特殊字符。
使用 expr 查找字符串的长度
要使用 expr 命令查找字符串的长度,可以使用 length 方法。该运算符会将给定字符串中存在的字符数返回到输出。
例如,要查找字符串“How To Geek”的长度,请运行以下命令:
expr length 'How To Geek'
输出为 11,因为字符串中有 9 个字符和两个空格。如果要查找不带空格的字符串的长度,可以使用其他命令(如 tr 或 awk)先删除它们。例如:
expr length "$(echo 'How To Geek' | tr -d ' ')"
输出将为 9,因为 tr 命令在将字符串传递给 expr length 命令之前删除了字符串中的所有空格。
用 expr 匹配两个字符串
expr 提供的操作之一是比较两个字符串。为此,请在 expr 命令中使用冒号 (:) 运算符。此运算符返回两个字符串开头匹配的字符数。
使用该运算符的语法是:
expr string1 : string2
这会比较两个字符串并返回从字符串开头开始的匹配字符数。
例如,以下命令将输出 5,因为两个字符串的前五个字符是相同的:
expr 'HowToGeek' : 'HowTo'
考虑另一个例子,其中两个给定的字符串相同:
expr 'How To Geek' : 'How To Geek'
输出为 11,因为两个字符串具有所有共同字符,包括空格。
如果不存在匹配字符,则输出将为零:
expr 'How To Geek' : 'Linux'
使用 expr 递增和递减变量
expr 命令还可以计算递增和递减变量值的表达式。此外,您可以将结果分配给新变量。
考虑下面的示例,其中我们定义了一个变量“a”并使用 expr 命令递增其值:
a=20
a=`expr $a + 1`
echo $a
类似地,要递减变量值,请使用相同的语法,但用减法替换加号:
a=20
a=`expr $a - 1`
echo $a
使用 expr 提取子字符串
要从给定字符串中提取子字符串,可以使用带有 substr 运算符的 expr 命令。这样,您可以从较大的文本中提取特定信息,例如名称、日期或任何代码。您还可以使用此运算符从字符串中删除不需要的字符或空格。
考虑以下示例命令,其中初始化了一个新字符串。之后,使用 expr 命令,我们将从字符串“HowToGeek”中获取第二到第五个字符:
a=HowToGeek
b=`expr substr $a 2 5`
echo $b
使用 Shell 脚本执行 expr 操作
要使用 expr 命令自动处理表达式,您可以创建自定义 shell 脚本。 Shell 脚本是多用途工具,可以帮助您事半功倍。使用 shell 脚本,您可以自动执行重复性任务、操作数据并执行复杂的计算。
例如,您可以创建一个使用 expr 命令将两个数字相加的脚本。首先,您需要创建一个扩展名为“.sh”的文件,例如“my_script.sh”。这告诉 shell 它是一个脚本文件。接下来,您需要编写一个代码,可以将两个数字作为输入并输出它们的总和。这是一个可以做到这一点的示例脚本:
echo "Enter two numbers"
read a
read b
sum=`expr $a + $b`
echo "Sum of two numbers is= $sum"
该脚本使用 expr 命令来计算变量“a”和“b”的算术运算。 echo 命令将消息打印到标准输出,而 read 命令从标准输入读取一行并将其放入变量中。
接下来,要使该脚本可执行,请运行 chmod 命令:
chmod +x my_script.sh
现在,通过运行以下命令继续执行脚本:
./my_script.sh
系统将提示您输入两个数字。输入数字后,您将看到脚本将在屏幕上显示两个数字的总和。您还可以根据需要修改脚本以执行其他操作或任务。
尝试一些替代的 Linux 命令
本文主要关注 expr 命令,但您也可以尝试其他一些命令来进行各种操作。这些命令包括声明、let 和 bc。所有这些命令行工具都可以对定义的值执行简单到复杂的数学运算。
声明命令可以创建和修改变量及其属性。类似地,let 命令计算 shell 变量的算术表达式。最后,bc 是一个命令行计算器,支持任意精度算术和各种数学函数。它还可以解析支持循环、条件语句和变量的脚本语言。