9.7. Двойные круглые скобки


Эта конструкция во многом похожа на инструкцию let, внутри ((...)) вычисляются арифметические выражения и возвращается их результат. В простейшем случае, конструкция a=$(( 5 + 3 )) присвоит переменной "a" значение выражения "5 + 3", или 8. Но, кроме того, двойные круглые скобки позволяют работать с переменными в стиле языка C.

Пример 9-29. Работа с переменными в стиле языка C

  1. #!/bin/bash
  2. # Работа с переменными в стиле языка C.
  3. echo
  4. (( a = 23 ))  # Присвоение переменной в стиле C, с обоих строн от "=" стоят пробелы.
  5. echo "a (начальное значение) = $a"
  6. (( a++ ))     # Пост-инкремент 'a', в стиле C.
  7. echo "a (после a++) = $a"
  8. (( a-- ))     # Пост-декремент 'a', в стиле C.
  9. echo "a (после a--) = $a"
  10. (( ++a ))     # Пред-инкремент 'a', в стиле C.
  11. echo "a (после ++a) = $a"
  12. (( --a ))     # Пред-декремент 'a', в стиле C.
  13. echo "a (после --a) = $a"
  14. echo
  15. (( t = a<45?7:11 ))   # Трехместный оператор в стиле языка C.
  16. echo "If a < 45, then t = 7, else t = 11."
  17. echo "t = $t "        # Да!
  18. echo
  19. # См. так же описание ((...))  в циклах "for" и "while".
  20. # Эта конструкция доступна в Bash, начиная с версии 2.04.
  21. exit 0

См. так же Пример 10-12.