4.2. Присваивание значений переменным


=

оператор присваивания (пробельные символы до и после оператора — недопустимы)

Caution

Не путайте с операторами сравнения = и -eq!

Обратите внимание: символ = может использоваться как в качестве оператора присваивания, так и в качестве оператора сравнения, конкретная интерпретация зависит от контекста применения.

Пример 4-2. Простое присваивание

  1. #!/bin/bash
  2. # Явные переменные
  3. echo
  4. # Когда перед именем переменной не употребляется символ '$'?
  5. # В операциях присваивания.
  6. # Присваивание
  7. a=879
  8. echo "Значение переменной \"a\"$a."
  9. # Присваивание с помощью ключевого слова 'let'
  10. let a=16+5
  11. echo "Значение переменной \"a\" теперь стало равным: $a."
  12. echo
  13. # В заголовке цикла 'for' (своего рода неявное присваивание)
  14. echo -n "Значения переменной \"a\" в цикле: "
  15. for a in 7 8 9 11
  16. do
  17.   echo -n "$a "
  18. done
  19. echo
  20. echo
  21. # При использовании инструкции 'read' (тоже одна из разновидностей присваивания)
  22. echo -n "Введите значение переменной \"a\" "
  23. read a
  24. echo "Значение переменной \"a\" теперь стало равным: $a."
  25. echo
  26. exit 0

Пример 4-3. Присваивание значений переменным простое и замаскированное

  1. #!/bin/bash
  2. a=23              # Простейший случай
  3. echo $a
  4. b=$a
  5. echo $b
  6. # Теперь немного более сложный вариант (подстановка команд).
  7. a=`echo Hello!`   # В переменную 'a' попадает результат работы команды 'echo'
  8. echo $a
  9. #  Обратите внимание на восклицательный знак (!) в подстанавливаемой команде
  10. #+ этот вариант не будет работать при наборе в командной строке,
  11. #+ поскольку здесь используется механизм "истории команд" BASH
  12. #  Однако, в сценариях, механизм истории команд запрещен.
  13. a=`ls -l`         # В переменную 'a' записывается результат работы команды 'ls -l'
  14. echo $a           # Кавычки отсутствуют, удаляются лишние пробелы и пустые строки.
  15. echo
  16. echo "$a"         # Переменная в кавычках, все пробелы и пустые строки сохраняются.
  17.                   # (См. главу "Кавычки.")
  18. exit 0

Присваивание переменных с использованием $(...) (более современный метод, по сравнению с обратными кавычками)

  1. # Взято из /etc/rc.d/rc.local
  2. R=$(cat /etc/redhat-release)
  3. arch=$(uname -m)