Эта конструкция во многом похожа на инструкцию let, внутри ((...)) вычисляются арифметические выражения и возвращается их результат. В простейшем случае, конструкция a=$(( 5 + 3 )) присвоит переменной "a" значение выражения "5 + 3", или 8. Но, кроме того, двойные круглые скобки позволяют работать с переменными в стиле языка C.
Пример 9-29. Работа с переменными в стиле языка C
#!/bin/bash # Работа с переменными в стиле языка C. echo (( a = 23 )) # Присвоение переменной в стиле C, с обоих строн от "=" стоят пробелы. echo "a (начальное значение) = $a" (( a++ )) # Пост-инкремент 'a', в стиле C. echo "a (после a++) = $a" (( a-- )) # Пост-декремент 'a', в стиле C. echo "a (после a--) = $a" (( ++a )) # Пред-инкремент 'a', в стиле C. echo "a (после ++a) = $a" (( --a )) # Пред-декремент 'a', в стиле C. echo "a (после --a) = $a" echo (( t = a45?7:11 )) # Трехместный оператор в стиле языка C. echo "If a 45, then t = 7, else t = 11." echo "t = $t " # Да! echo # См. так же описание ((...)) в циклах "for" и "while". # Эта конструкция доступна в Bash, начиная с версии 2.04. exit 0
См. так же Пример 10-12.