expr
外观
原作者 | Dick Haight (贝尔实验室) |
---|---|
開發者 | 多个开源软件和商业软件开发者 |
首次发布 | 1979年 |
操作系统 | Unix, Unix-like, IBM i |
平台 | 跨平台 |
类型 | 命令 |
expr是Unix与Unix-like操作系统下计算表达式及输出相应结果的命令行工具,最早见于Unix v7。这个命令也已经被移植到IBM i系统上。[1]
概览
[编辑]expr计算整数或字符串表达式,包括正则表达式格式匹配。表达式中的每一个符号(运算符、值等)必须以分开的参数传递。书写表达式最大的挑战就是要避免Unix shell将expr需要处理的字符当作控制指令而执行动作。
语法
[编辑]语法: expr expression
三种运算可用:
- 整数:加、减、乘、除、求余数
- 字符串:匹配正则表达式;某些版本上还可以查找一组字符("index")、子字符串("substr"),求字符串长度("length")
- 两者皆可:比较(如:相等、不等、小于)
示例
[编辑]expr length "abcdef" "<" 5 "|" 15 - 4 ">" 8
这个例子会输出"1"。这是因为"abcdef"长为6(也就是大于5),故"|"左侧表达式返回0;但“15-4”得11(也就是大于8),因此右侧表达式为真,使得整个表达式为真,所以结果为1。在此示例中,程序退出状态为0。
在纯算术运算下,通常使用bc更为简便,是因为它将整个表达式看作一个参数。例如:
echo "3 * 4 + 14 / 2" | bc
在可移植脚本编程时,"index"、"length"、"match"和"substr"等命令的使用需要避免;字符串匹配仍然可行,但必须使用"string : regexp"语法。
另请参见
[编辑]参考资料
[编辑]- ^ IBM. IBM System i Version 7.2 Programming Qshell (PDF). [2020-09-05]. (原始内容存档 (PDF)于2020-09-18) (英语).
外部链接
[编辑]- 单一UNIX®规范第7期,由國際開放標準組織发布 : evaluate arguments as an expression – 命令与工具(Commands & Utilities)参考,
- expr invocation in GNU coreutils manual (页面存档备份,存于互联网档案馆)