Shell 中expr的使用

1.expr命令一般用于整数值,其一般格式为:
expr argument operator argument
一般的用法是使用expr做算术运算,如:
[[email protected] ~]# expr 10 + 20
30
$expr 30 / 3 / 2
5
(注意运算符左右都有空格 ,如果没有空格表示是字符串连接)
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。如:
[[email protected] ~]# expr 10 * 10   //:错误,
expr: syntax error
[[email protected] ~]# expr 10 \* 10  //正确
100
2.利用expr,把输出导入/dev/null,可以作判断。
如果表达式成功,可以如下表示:
$value=12
$expr $value + 10 > /dev/null 2>&1
$echo $?
0

如果表达式失败,返回非0值
$value=hello
$expr $value + 10 > /dev/null 2>&1
$echo $?
2
3.expr也操作用于字符串
字符串比较:
expr 如果成功,返回值1,任何其他值为无效或错误。如下面的例子测试两个字符串是否相等,这里字符串为“hello”和hello”。
$value=hello
$expr $value = "hello"
1
#这时候shell的返回值为0。
$echo $?
0
4.expr的模式匹配:
关于expr模式匹配,可以使用expr通过指定冒号:选项指定要进行字符串模式匹配。 .*代表任
何字符重复0次或多次。返回值为括号中的内容.
如在tomcat的catalina.sh,使用了expr的模式匹配来获取连接文件的真实路径,例子如下:
# resolve links - $0 may be a softlink
PRG="$0" 
while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : ‘.*-> .?$‘`   #这里expr的返回值为连接文件的真实路径
  if expr "$link" : ‘/.*‘ > /dev/null; then #路径名返回1
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

时间: 2024-10-31 03:55:56

Shell 中expr的使用的相关文章

Shell中expr命令

expr 命令 用途 求表达式变量的值. 语法 expr Expression 描述 expr 命令读入 Expression 参数,计算它的值,然后将结果写入到标准输出. 格式 expr Expression(命令读入Expression 参数,计算它的值,然后将结果写入到标准输出) –参数应用规则:     用空格隔开每个项:     用 \ (反斜杠) 放在 shell 特定的字符前面:     对包含空格和其他特殊字符的字符串要用引号括起来 最大的作用就是两个--四则运算和字符串的操作.

shell中expr使用

expr命令将把一个算术表达式作为参数,通常形式如下: expr [数字] [操作符] [数字] 由于Shell是按字符形式存储变量的,所以用户必须保证参加算术运算的操作数必须为数值.下面是有效的算术操作符: + 两个整数相加 - 第一个数减去第二个数 * 两整数相乘 / 第一个整数除以第二个整数 % 两整数相除,取余数 例如: [root@mail root]# expr 2 + 1 结果显示:3 [root@mail root]# expr 5 - 3 结果显示:2 若expr的一个参数是变

Linux shell命令中expr

在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式: $val1=`$val2 - 1` 其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式.可以用来将很多命令的结果保存到一个变量中去.接着就是运算符了,运算符的左右两边必须是空格,否则会出错. 接着是强大的字符串操作: 提取指

linux在shell中获取时间

获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数 获取明天的日期 date -d next-day +%Y%m%d 获取昨天的日期 date -d last-day +%Y%m%d 获取上个月的年和月 date -d last-month +%Y%m 获取下个月的年和月date -d next-month +%Y%m 获取明年

书写优雅的shell脚本(五)- shell中(())双括号运算符

在使用shell的逻辑运算符"[]"使用时候,必须保证运算符与算数之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 1.语法: ((表达式1,表达式2-)) 2.特点: (1)在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. (2)在双括号结构中,所有变量可以不加入:"$"符号前缀. (3)双括号可以进行逻辑运算,四则运算 (4)双括号结

[ SHELL编程 ] shell中各种括号的使用方法

转载自:http://www.jb51.net/article/60326.htm 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)现在分

shell简单用法笔记(shell中数值运算)二

shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a=123 b=456 c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法1: a=123 b=456 c=$(($a+$b)) 方法2: a=123 b=456 declare -i c=$a+$b 通过declare -i 来声明c的数值类型为int类型 方法3: a=123 b=456 c=$(expr $a + $b) 注意+号两边有空格 通过貂绒ex

shell中常用的特殊符号

在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# [email protected] `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments) 注释字符 该句不会被执行 ~ 帐户的 home 目录 用户的

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我