http://www.faqs.org/docs/abs/HTML/moreadv.html
Example 12-6. Using expr
1 #!/bin/bash 2 3 # Demonstrating some of the uses of 'expr' 4 # ======================================= 5 6 echo 7 8 # Arithmetic Operators 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 # modulo 23 echo 24 echo "5 mod 3 = $a" 25 26 echo 27 echo 28 29 # Logical Operators 30 # ------- --------- 31 32 # Returns 1 if true, 0 if false, 33 #+ opposite of normal Bash convention. 34 35 echo "Logical Operators" 36 echo 37 38 x=24 39 y=25 40 b=`expr $x = $y` # Test equality. 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 # There is also a "\>=" operator (greater than or equal to). 61 62 63 echo 64 echo 65 66 # Comparison Operators 67 # ---------- --------- 68 69 echo "Comparison Operators" 70 echo 71 a=zipper 72 echo "a is $a" 73 if [ `expr $a = snap` ] 74 # Force re-evaluation of variable 'a' 75 then 76 echo "a is not zipper" 77 fi 78 79 echo 80 echo 81 82 83 84 # String Operators 85 # ------ --------- 86 87 echo "String Operators" 88 echo 89 90 a=1234zipper43231 91 echo "The string being operated upon is \"$a\"." 92 93 # length: length of string 94 b=`expr length $a` 95 echo "Length of \"$a\" is $b." 96 97 # index: position of first character in substring 98 # that matches a character in string 99 b=`expr index $a 23` 100 echo "Numerical position of first \"2\" in \"$a\" is \"$b\"." 101 102 # substr: extract substring, starting position & length specified 103 b=`expr substr $a 2 6` 104 echo "Substring of \"$a\", starting at position 2,\ 105 and 6 chars long is \"$b\"." 106 107 108 # The default behavior of the 'match' operations is to 109 #+ search for the specified match at the ***beginning*** of the string. 110 # 111 # uses Regular Expressions 112 b=`expr match "$a" '[0-9]*'` # Numerical count. 113 echo Number of digits at the beginning of \"$a\" is $b. 114 b=`expr match "$a" '\([0-9]*\)'` # Note that escaped parentheses 115 # == == + trigger substring match. 116 echo "The digits at the beginning of \"$a\" are \"$b\"." 117 118 echo 119 120 exit 0 |
| The : operator can substitute for match. For example, b=`expr $a : [0-9]*` is the exact equivalent of b=`expr match $a [0-9]*` in the above listing. 1 #!/bin/bash 2 3 echo 4 echo "String operations using \"expr \$string : \" construct" 5 echo "===================================================" 6 echo 7 8 a=1234zipper5FLIPPER43231 9 10 echo "The string being operated upon is \"`expr "$a" : '\(.*\)'`\"." 11 # Escaped parentheses grouping operator. == == 12 13 # *************************** 14 #+ Escaped parentheses 15 #+ match a substring 16 # *************************** 17 18 19 # If no escaped parentheses... 20 #+ then 'expr' converts the string operand to an integer. 21 22 echo "Length of \"$a\" is `expr "$a" : '.*'`." # Length of string 23 24 echo "Number of digits at the beginning of \"$a\" is `expr "$a" : '[0-9]*'`." 25 26 # ------------------------------------------------------------------------- # 27 28 echo 29 30 echo "The digits at the beginning of \"$a\" are `expr "$a" : '\([0-9]*\)'`." 31 # == == 32 echo "The first 7 characters of \"$a\" are `expr "$a" : '\(.......\)'`." 33 # ===== == == 34 # Again, escaped parentheses force a substring match. 35 # 36 echo "The last 7 characters of \"$a\" are `expr "$a" : '.*\(.......\)'`." 37 # ==== end of string operator ^^ 38 # (actually means skip over one or more of any characters until specified 39 #+ substring) 40 41 echo 42 43 exit 0 |
|
No comments:
Post a Comment