Expr

expr
原作者Dick Haight
(贝尔实验室)
開發者多个开源软件商业软件开发者
首次发布1979年,​45年前​(1979
操作系统Unix, Unix-like, IBM i
平台跨平台
类型命令

expr是Unix与Unix-like操作系统下计算表达式及输出相应结果的命令行工具,最早见于Unix v7。这个命令也已经被移植到IBM i系统上。[1]

概览

expr计算整数或字符串表达式,包括正则表达式格式匹配。表达式中的每一个符号(运算符、值等)必须以分开的参数传递。书写表达式最大的挑战就是要避免Unix shellexpr需要处理的字符当作控制指令而执行动作。

语法

语法: expr expression

三种运算可用:

  • 整数:加、减、乘、除、求余数
  • 字符串:匹配正则表达式;某些版本上还可以查找一组字符("index")、子字符串("substr"),求字符串长度("length")
  • 两者皆可:比较(如:相等、不等、小于)

示例

下面是一个涉及布尔表达式的(不符合POSIX标准)例子:

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"语法。

另请参见

参考资料

  1. ^ IBM. IBM System i Version 7.2 Programming Qshell (PDF). [2020-09-05]. (原始内容存档 (PDF)于2020-09-18) (英语). 

外部链接

維基教科書中的相關電子教程:Commands
文件系統
程序
  • at
  • bg
  • chroot
  • cron
  • fg
  • kill
  • killall英语killall
  • nice
  • pgrep
  • pkill英语pkill
  • ps
  • pstree英语pstree
  • time
  • top
用户环境
  • clear
  • env
  • exit
  • history英语history (Unix)
  • id
  • logname
  • mesg英语mesg
  • passwd
  • su
  • sudo
  • uptime
  • talk英语talk (software)
  • tput英语tput
  • uname
  • w
  • wall英语wall (Unix)
  • who
  • whoami
  • write英语write (Unix)
文本编辑
  • awk
  • banner英语banner (Unix)
  • basename
  • comm英语comm
  • csplit英语csplit
  • cut
  • diff
  • dirname
  • ed
  • ex
  • fmt英语fmt
  • fold英语fold (Unix)
  • head英语head (Unix)
  • iconv
  • join英语join (Unix)
  • less
  • more
  • nl英语nl (Unix)
  • paste英语paste (Unix)
  • sed
  • sort英语sort (Unix)
  • spell英语spell (Unix)
  • strings英语strings (Unix)
  • tail
  • tr
  • uniq英语uniq
  • vi
  • wc
  • xargs
壳层内建
网络
查找
文档
  • apropos英语apropos (Unix)
  • help英语help (command)
  • man
软件开发
杂项
  • bc
  • cal
  • dc
  • expr
  • lp英语lp (Unix)
  • lpr
  • sleep
  • true和false
  • yes