mirror of https://github.com/tLDP/LDP
105 lines
2.1 KiB
Bash
105 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Demonstrating some of the uses of 'expr'
|
|
# =======================================
|
|
|
|
echo
|
|
|
|
# Arithmetic Operators
|
|
# ---------- ---------
|
|
|
|
echo "Arithmetic Operators"
|
|
echo
|
|
a=`expr 5 + 3`
|
|
echo "5 + 3 = $a"
|
|
|
|
a=`expr $a + 1`
|
|
echo
|
|
echo "a + 1 = $a"
|
|
echo "(incrementing a variable)"
|
|
|
|
a=`expr 5 % 3`
|
|
# modulo
|
|
echo
|
|
echo "5 mod 3 = $a"
|
|
|
|
echo
|
|
echo
|
|
|
|
# Logical Operators
|
|
# ------- ---------
|
|
|
|
# Returns 1 if true, 0 if false,
|
|
#+ opposite of normal Bash convention.
|
|
|
|
echo "Logical Operators"
|
|
echo
|
|
|
|
x=24
|
|
y=25
|
|
b=`expr $x = $y` # Test equality.
|
|
echo "b = $b" # 0 ( $x -ne $y )
|
|
echo
|
|
|
|
a=3
|
|
b=`expr $a \> 10`
|
|
echo 'b=`expr $a \> 10`, therefore...'
|
|
echo "If a > 10, b = 0 (false)"
|
|
echo "b = $b" # 0 ( 3 ! -gt 10 )
|
|
echo
|
|
|
|
b=`expr $a \< 10`
|
|
echo "If a < 10, b = 1 (true)"
|
|
echo "b = $b" # 1 ( 3 -lt 10 )
|
|
echo
|
|
# Note escaping of operators.
|
|
|
|
b=`expr $a \<= 3`
|
|
echo "If a <= 3, b = 1 (true)"
|
|
echo "b = $b" # 1 ( 3 -le 3 )
|
|
# There is also a "\>=" operator (greater than or equal to).
|
|
|
|
|
|
echo
|
|
echo
|
|
|
|
|
|
|
|
# String Operators
|
|
# ------ ---------
|
|
|
|
echo "String Operators"
|
|
echo
|
|
|
|
a=1234zipper43231
|
|
echo "The string being operated upon is \"$a\"."
|
|
|
|
# length: length of string
|
|
b=`expr length $a`
|
|
echo "Length of \"$a\" is $b."
|
|
|
|
# index: position of first character in substring
|
|
# that matches a character in string
|
|
b=`expr index $a 23`
|
|
echo "Numerical position of first \"2\" in \"$a\" is \"$b\"."
|
|
|
|
# substr: extract substring, starting position & length specified
|
|
b=`expr substr $a 2 6`
|
|
echo "Substring of \"$a\", starting at position 2,\
|
|
and 6 chars long is \"$b\"."
|
|
|
|
|
|
# The default behavior of the 'match' operations is to
|
|
#+ search for the specified match at the BEGINNING of the string.
|
|
#
|
|
# Using Regular Expressions ...
|
|
b=`expr match "$a" '[0-9]*'` # Numerical count.
|
|
echo Number of digits at the beginning of \"$a\" is $b.
|
|
b=`expr match "$a" '\([0-9]*\)'` # Note that escaped parentheses
|
|
# == == #+ trigger substring match.
|
|
echo "The digits at the beginning of \"$a\" are \"$b\"."
|
|
|
|
echo
|
|
|
|
exit 0
|