计算表达式
expr expression
expr [--help] [--version]
expr命令用于计算指定的表达式,把计算结果写到标准输出。其中,expression可以是下列逻辑运算表达式、字符串比较表达式、整数算术运算表达式或模式匹配表达式等:
arg1 \| arg2 如果arg1既非NULL,也非0,返回arg1,否则返回arg2。
arg1 \& arg2 如果arg1与arg2均非NULL或0,返回arg1,否则返回0。
arg1 \< arg2 如果前者小于后者,返回1,否则返回0。
arg1 \<= arg2 如果前者小于或等于后者,返回1,否则返回0。
arg1 = arg2 如果两者相等,返回1,否则返回0。
arg1 == arg2 同上。
arg1 != arg2 如果两者不等,返回1,否则返回0。
arg1 \>= arg2 如果前者大于或等于后者,返回1,否则返回0。
arg1 \> arg2 如果前者大于后者,返回1,否则返回0。
arg1 + arg2 返回两者算术运算之和。
arg1 - arg2 返回两者算术运算之差。
arg1 \* arg2 返回两者的算术乘积。
arg1 / arg2 返回两者整除运算的结果(运算结果仅保留整数部分)。
arg1 % arg2 返回两者模运算的结果。
str : regexp 从给定字符串str的第一个字符开始执行正则表达式regexp的模式匹配,如果匹配成功,且正则表达式含有“\(”与“\)”子表达式,则返回匹配子表达式的字符串,否则返回匹配表达式的字符个数。如果匹配失败,且正则表达式含有“\(”与“\)”子表达式,则返回空串,否则返回0。注意,这里只能返回匹配第一个子表达式“\( ... \)”的字符串。仅当使用了表达式组合运算符时,后续子表达式才有意义。此外,“\( ... \)”子表达式前后必须加双引号。
match str regexp 意义同上。
substr str pos length 从指定的字符位置pos开始,从字符串str中抽取指定长度length的子串。字符串的起始字符位置为1。
index str chars 从给定的字符串中返回发现给定字符的位置,否则返回0。
length str 返回给定字符串的长度。
+ token 把给定的记号当作字符串处理,即使是一个关键字(如match)或运算符(如除号“/”)。
\( expression \) 返回表达式的计算结果。
在上述表达式中,操作数或者是一个整数,或者是一个字符串。整数前面可以有负号“-”,表示负数(但不能用作表达式中的第一个操作数)。如果arg1和arg2都是整数,采用算术比较运算,否则按字符编码顺序进行比较。
如果表达式的计算结果既非空串,也非0,expr命令返回结束状态0。如果表达式的计算结果是空串或0,expr命令的结束状态是1。
expr命令仅支持基本的正则表达式,给定的正则表达式蕴含着一个“^”前缀,表示仅考虑从字符串第一个字符开始的子串是否匹配。如果存在,正则表达式中的运算符“*”、“\+”、“\?”和“\|”分别表示匹配前一项0次或多次、一次或多次、0次或一次,以及交替匹配等。
1. 利用expr命令测试字符串表达式。
$ TIMEZONE=CST $ expr "$TIMEZONE" = "CST" 1 $ echo $? 0 $ expr "$TIMEZONE" = "GMT" 0 $ echo $? 1 $
2. 利用expr命令检索字符串。
$ expr apple : "\(ap\+le\)" apple $
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z