Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2453318
  • 博文数量: 540
  • 博客积分: 11289
  • 博客等级: 上将
  • 技术积分: 6160
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-11 20:27
个人简介

潜龙勿用,见龙在田

文章分类

全部博文(540)

文章存档

2018年(2)

2013年(5)

2012年(24)

2011年(104)

2010年(60)

2009年(217)

2008年(128)

分类:

2009-10-14 14:02:52

通用求值表达式: 通过给定的操作(参数必须以空格分开)连接参数,并对参数求值.可以是算术操作, 比较操作, 字符串操作或者是逻辑操作.
expr 3 + 5
返回值为8

增加变量的值, 与 let y=y+1 和 y=$(($y+1)) 的效果相同.

举例:
Example 12-9 使用 expr
################################Start
Script#######################################
  1 #!/bin/bash
  2 
  3 # 展示一些 'expr'的使用
  4 # =====================
  5 
  6 echo
  7 
  8 # 算术 操作
    9 # ---- ----
 10 
  11 echo "Arithmetic Operators"
 12 echo
  13 a=`expr 5 + 3`
  14 echo "5 + 3 = $a"  15 
  16 a=`expr $a + 1`
 17 echo
  18 echo "a + 1 = $a"
  19 echo "(incrementing a variable)"
 20 
  21 a=`expr 5 % 3`
 22 # 取模操作
 23 echo
  24 echo "5 mod 3 = $a"
 25 
 26 echo
 27 echo
 28 
 29 # 逻辑 操作
  30 # ---- ----
 31 
 32 #  true返回 1 ,false 返回 0 ,
 33 #+ 而 Bash 的使用惯例则相反.
 34 
  35 echo "Logical Operators"
 36 echo
 37 
 38 x=24
 39 y=25
 40 b=`expr $x = $y`         # 测试相等.
 41 echo "b = $b"            # 0  ( $x -ne $y )
 42 echo
 43 
 44 a=3
  45 b=`expr $a \> 10`
  46 echo 'b=`expr $a \> 10`, therefore...'
  47 echo "If a > 10, b = 0 (false)"
 48 echo "b = $b"            # 0  ( 3 ! -gt 10 )
 49 echo
 50 
  51 b=`expr $a \< 10`
  52 echo "If a < 10, b = 1 (true)"
 53 echo "b = $b"            # 1  ( 3 -lt 10 )
 54 echo
  55 # Note escaping of operators.
 56 
  57 b=`expr $a \<= 3`
  58 echo "If a <= 3, b = 1 (true)"  59 echo "b = $b"            # 1  ( 3 -le 3 )
 60 # 也有 "\>=" 操作 (大于等于).
 61 
 62 
 63 echo
 64 echo
 65 
 66 
 67 
 68 # 字符串 操作
  69 # ------ ----
 70 
  71 echo "String Operators"
 72 echo
 73 
 74 a=1234zipper43231
  75 echo "The string being operated upon is \"$a\"."
 76 
 77 # 长度: 字符串长度
  78 b=`expr length $a`
  79 echo "Length of \"$a\" is $b."
 80 
 81 # 索引: 从字符串的开头查找匹配的子串,
 82 #       并取得第一个匹配子串的位置.
  83 b=`expr index $a 23`
  84 echo "Numerical position of first \"2\" in \"$a\" is \"$b\"."
 85 
  86 # substr: 从指定位置提取指定长度的字串.
  87 b=`expr substr $a 2 6`
  88 echo "Substring of \"$a\", starting at position 2,\
  89 and 6 chars long is \"$b\"."
 90 
 91 
 92 #  'match' 操作的默认行为就是
 93 #+ 从字符串的开始进行搜索,并匹配第一个匹配的字符串.
 94 #
 95 #        使用正则表达式
 96 b=`expr match "$a" '[0-9]*'`               #  数字的个数.
  97 echo Number of digits at the beginning of \"$a\" is $b.
 98 b=`expr match "$a" '\([0-9]*\)'`           #  注意需要转义括号
 99 #                   ==      ==              + 这样才能触发子串的匹配.
100 echo "The digits at the beginning of \"$a\" are \"$b\"."
101 
102 echo 103 
104 exit 0
################################End
Script#########################################
  注意: ":" 操作可以替换 match. 比如, b=`expr $a : [0-9]*`与上边所使用的 b=`expr 
  match $a [0-9]*` 完全等价.

更详细的用法见ABS
阅读(1599) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~