9.4. Объявление переменных: declare и typeset | Популярный Linux

Опубликовано Bash в Ср, 23/12/2009 — 20:59


9.4. Объявление переменных: declare и typeset

Инструкции declare и typeset являются встроенными инструкциями (они абсолютно идентичны друг другу и являются синонимами) и предназначена для наложения ограничений на переменные. Это очень слабая попытка контроля над типами, которая имеется во многих языках программирования. Инструкция declare появилась в Bash, начиная с версии 2. Кроме того, инструкция typeset может использоваться и в ksh-сценариях.

ключи инструкций declare/typeset

-r readonly (только для
чтения)
  1. declare -r var1

(declare -r var1 аналогично объявлению readonly var1)

Это грубый эквивалент констант (const) в языке C. Попытка изменения таких переменных завершается сообщением об ошибке.

-i integer
  1. declare -i number
  2. # Сценарий интерпретирует переменную «number» как целое число.
  3. number=3
  4. echo «number = $number«     # number = 3
  5. number=three
  6. echo «number = $number«     # number = 0
  7. # Строка «three» интерпретируется как целое число.

Допускается выполнение некоторых арифметических операций над
переменными, объявленными как integer, не прибегая к инструкциям
expr или let.

  1. n=6/3
  2. echo «n = $n«       # n = 6/3
  3. declare -i n
  4. n=6/3
  5. echo «n = $n«       # n = 2
-a array
  1. declare -a indices

Переменная indices объявляется массивом.

-f functions
  1. declare -f

Инструкция declare -f, без аргументов, приводит к выводу списка ранее объявленных функций в сценарии.

  1. declare -f function_name

Инструкция declare -f function_name выводит имя функции function_name, если она была объявлена ранее.

-x export
  1. declare -x var3

Эта инструкция объявляет переменную, как доступную для экспорта.

-x var=$value
  1. declare -x var3=373

Инструкция declare допускает совмещение объявления и присваивания значения переменной одновременно.

Пример 9-20. Объявление переменных с помощью инструкции declare

  1. #!/bin/bash
  2. func1 ()
  3. {
  4. echo Это функция.
  5. }
  6. declare -f        # Список функций, объявленных выше.
  7. echo
  8. declare -i var1   # var1 — целочисленная переменная.
  9. var1=2367
  10. echo «переменная var1 объявлена как $var1«
  11. var1=var1+1       # Допустимая арифметическая операция над целочисленными переменными.
  12. echo «переменная var1 увеличена на 1 = $var1
  13. # Допустимая операция для целочисленных переменных
  14. echo «Возможно ли записать дробное число 2367.1 в var1?»
  15. var1=2367.1       # Сообщение об ошибке, переменная не изменяется.
  16. echo «значение переменной var1 осталось прежним = $var1«
  17. echo
  18. declare -r var2=13.36         # инструкция ‘declare’ допускает установку свойств переменной
  19.                               #+ и одновременно присваивать значение.
  20. echo «var2 declared as $var2« # Допускается ли изменять значение readonly переменных?
  21. var2=13.37                    # Сообщение об ошибке и завершение работы сценария.
  22. echo «значение переменной var2 осталось прежним $var2« # Эта строка никогда не будет выполнена.
  23. exit 0                        # Сценарий завершит работу выше.

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.