Linux系统之expr命令的基本使用

简介: 【10月更文挑战第18天】Linux系统之expr命令的基本使用

一、expr命令介绍

expr是一个用于数学表达式计算工具命令行工具,它可以对整数、小数和字符串进行算术操作、逻辑运算、比较操作和字符串操作等。

二、expr的命令帮助

1. expr的help帮助信息

expr的help帮助信息,如下欧式:

[root@docker ~]# expr --help
Usage: expr EXPRESSION
  or:  expr OPTION

      --help     display this help and exit
      --version  output version information and exit

Print the value of EXPRESSION to standard output.  A blank line below
separates increasing precedence groups.  EXPRESSION may be:

  ARG1 | ARG2       ARG1 if it is neither null nor 0, otherwise ARG2

  ARG1 & ARG2       ARG1 if neither argument is null or 0, otherwise 0

  ARG1 < ARG2       ARG1 is less than ARG2
  ARG1 <= ARG2      ARG1 is less than or equal to ARG2
  ARG1 = ARG2       ARG1 is equal to ARG2
  ARG1 != ARG2      ARG1 is unequal to ARG2
  ARG1 >= ARG2      ARG1 is greater than or equal to ARG2
  ARG1 > ARG2       ARG1 is greater than ARG2

  ARG1 + ARG2       arithmetic sum of ARG1 and ARG2
  ARG1 - ARG2       arithmetic difference of ARG1 and ARG2

  ARG1 * ARG2       arithmetic product of ARG1 and ARG2
  ARG1 / ARG2       arithmetic quotient of ARG1 divided by ARG2
  ARG1 % ARG2       arithmetic remainder of ARG1 divided by ARG2

  STRING : REGEXP   anchored pattern match of REGEXP in STRING

  match STRING REGEXP        same as STRING : REGEXP
  substr STRING POS LENGTH   substring of STRING, POS counted from 1
  index STRING CHARS         index in STRING where any CHARS is found, or 0
  length STRING              length of STRING
  + TOKEN                    interpret TOKEN as a string, even if it is a
                               keyword like 'match' or an operator like '/'

  ( EXPRESSION )             value of EXPRESSION

Beware that many operators need to be escaped or quoted for shells.
Comparisons are arithmetic if both ARGs are numbers, else lexicographical.
Pattern matches return the string matched between \( and \) or null; if
\( and \) are not used, they return the number of characters matched or 0.

Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null
or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'expr invocation'

2. expr的常用运算符

  • expr的常用运算符

加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
取模(取余)运算:%

三、expr命令的基本使用

1. 查询expr工具版本

查询expr工具版本

[root@docker ~]# expr --version
expr (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Parker, James Youngman, and Paul Eggert.

2. 算术运算

可以使用加、减、乘、除、模运算符进行基本的算术运算

  • 加法运算
[root@docker ~]# expr 8 + 9
17
  • 减法运算
[root@docker ~]# expr 8 -  9
-1
  • 乘法运算
[root@docker ~]# expr 8  \*  9
72
  • 除法运算
[root@docker ~]# expr 12  /  6
2
  • 取余运算
[root@docker ~]# expr 13  %  6
1

3. 比较操作

使用expr进行比较操作,判断正确输出1,判断错误输出为0。

[root@docker ~]# expr 13 \<  20
1
[root@docker ~]# expr 25 \<  20
0

4. 字符串操作

可以使用字符串操作符对字符串进行操作,其中,:“:”表示正则匹配,正则表达式中,“.”表示任意字符,“*”表示匹配任意次数。
需要注意的是,在expr中,各种操作符与数字或字符串之间必须用空格隔开。而且expr对于特殊字符,需要进行转义处理(如上述例子中的“\”符号)。

[root@docker ~]# expr "hello" : 'he'
2
[root@docker ~]# expr "hello" : '.*'
5

四、注意事项

  • 确保在 expr 中的操作符和操作数之间留有空格。
  • 使用特殊字符(如 <, >, (, ), |, &)时要进行转义或用引号括起来。
  • 字符串长度可以通过 expr length "string" 来计算。
  • 对于字符串匹配,可以使用 expr index "string" "substring" 来找到子串的位置。
  • 在执行算术运算时,确保使用正确的算术运算符并留有适当的空格。
  • 比较操作中,expr 返回 1 表示条件为真,返回 0 表示条件为假。
  • 注意 expr 的退出状态码,成功执行表达式会返回 0,否则返回非零值。
  • 避免使用 expr 进行浮点数运算,应考虑使用 bc 或其他工具来处理浮点数。
  • 当引用变量时,确保变量没有多余的空格或其他可能引起错误的字符。
相关文章
|
6天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用
|
2月前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
230 78
|
20天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
33 11
|
1月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
109 23
|
2月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
89 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
2月前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
99 14
Linux 10 个“who”命令示例
|
2月前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
203 20
|
2月前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
140 8
|
2月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
121 13
|
2月前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
128 7