В арифметических выражениях, оператор умножения обязательно должен экранироваться обратным слэшем.
Операция инкремента переменной, то же самое, что и let y=y+1, или y=$(($y+1)). Пример подстановки арифметических выражений.
z=`expr substr $string $position $length`
Извлекает подстроку длиной $length символов, начиная с позиции $position.
Пример 12-6. Пример работы с expr
# Демонстрация некоторых приемов работы с командой 'expr'
# =======================================
# Арифметические операции
# -------------- --------
echo "Арифметические операции"
echo "(инкремент переменной)"
# остаток от деления (деление по модулю)
# Возвращает 1 если выражение истинноо, 0 -- если ложно,
#+ в противоположность соглашениям, принятым в Bash.
echo "Логические операции"
b=`expr $x = $y` # Сравнение.
echo "b = $b" # 0 ( $x -ne $y )
echo 'b=`expr $a \> 10`, поэтому...'
echo "Если a > 10, то b = 0 (ложь)"
echo "b = $b" # 0 ( 3 ! -gt 10 )
echo "Если a < 10, то b = 1 (истина)"
echo "b = $b" # 1 ( 3 -lt 10 )
# Обратите внимание на необходимость экранирования операторов.
echo "Если a <= 3, то b = 1 (истина)"
echo "b = $b" # 1 ( 3 -le 3 )
# Существует еще оператор "\>=" (больше или равно).
echo "Операции сравнения"
echo "a -- это не zipper"
echo "Операции со строками"
echo "Строка над которой производятся операции: \"$a\"."
echo "длина строки \"$a\" равна $b."
# index: позиция первого символа подстроки в строке
echo "Позиция первого символа \"2\" в строке \"$a\" : \"$b\"."
# substr: извлечение подстроки, начиная с заданной позиции, указанной длины
echo "Подстрока в строке \"$a\", начиная с позиции 2,\
и длиной в 6 символов: \"$b\"."
# При выполнении поиска по шаблону, по-умолчанию поиск
#+ начинается с ***начала*** строки.
# Использование регулярных выражений
b=`expr match "$a" '[0-9]*'` # Подсчет количества цифр.
echo Количество цифр с начала строки \"$a\" : $b.
b=`expr match "$a" '\([0-9]*\)'` # Обратите внимание на экранирование круглых скобок
echo "Цифры, стоящие в начале строки \"$a\" : \"$b\"."