Оболочка bash сильно загружена текстом: командами, аргументами и именами файлов. В ней могут выражаться в числах обычные арифметические выражения (с помощью символов +,,*,/ и др.), которые заключаются в двойные скобки: {(выражение)). Поскольку многие арифметические символы, включая *, ( и ), специфически интерпретируются оболочкой, лучше заключать аргументы оболочки в кавычки, если в сценарии они могут быть расценены как математические выражения:
admin@serverl:$ cat arith #!/Ы n/bash answer=$(( $* )) echo $answer
admin@serverl:$ ./arith "(8+l)*(7l)60" 6
admin@serverl:$ ./arith "2**60"
1152921504606846976 admin@serverl:$
Последняя версия оболочки bash поддерживает 64битные целые числа (от 9 223 372 036 854 775 808 до 9 223 372 036 854 775 807), тогда как предыдущие версии поддерживали только 32битные целые числа (со смешной областью от 2 147 483 648 до 2 147 483 647). Числа с плавающей запятой не поддерживаются. Сценарии, нуждающиеся в плавающей запятой или более продвинутых операторах, могут использовать внешнюю программу, например be.
В арифметических выражениях вы можете применять переменные без символа $, используемого для замены значений в других параметрах:
admin@serverl:~$ cat arithexp
a=$l
b=$(( a+2 )) echo "$a + 2 = $b" c=$(( a*2 )) echo "$a * 2 = $c" admin@serverl:$ ./arithexp 6 6 + 2 = 8 6 * 2 = 12 admin@serverl:$