Искусство программирования на языке сценариев командной оболочки


Программирование на языке сценариев командной оболочки - стр. 24


echo

exit 0

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

#!/bin/bash

a=23 # Простейший случай echo $a b=$a echo $b

# Теперь немного более сложный вариант (подстановка команд).

a=`echo Hello!` # В переменную 'a' попадает результат работы команды 'echo' echo $a # Обратите внимание на восклицательный знак (!) в подстанавливаемой команде #+ этот вариант не будет работать при наборе в командной строке, #+ поскольку здесь используется механизм "истории команд" BASH # Однако, в сценариях, механизм истории команд запрещен.

a=`ls -l` # В переменную 'a' записывается результат работы команды 'ls -l' echo $a # Кавычки отсутствуют, удаляются лишние пробелы и пустые строки. echo echo "$a" # Переменная в кавычках, все пробелы и пустые строки сохраняются. # (См. главу "Кавычки.")

exit 0

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

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

4.3. Переменные Bash не имеют типа

В отличие от большинства других языков программирования, Bash не производит разделения переменных по "типам". По сути, переменные Bash являются строковыми переменными, но, в зависимости от контекста, Bash допускает целочисленную арифметику с переменными. Определяющим фактором здесь служит содержимое переменных.

Пример 4-4. Целое число или строка?

#!/bin/bash # int-or-string.sh: Целое число или строка?

a=2334 # Целое число. let "a += 1" echo "a = $a " # a = 2335 echo # Все еще целое число.

b=${a/23/BB} # замена "23" на "BB". # Происходит трансформация числа в строку. echo "b = $b" # b = BB35 declare -i b # Явное указание типа здесь не поможет. echo "b = $b" # b = BB35

let "b += 1" # BB35 + 1 = echo "b = $b" # b = 1 echo

c=BB34 echo "c = $c" # c = BB34 d=${c/BB/23} # замена "BB" на "23". # Переменная $d становится целочисленной.


- Начало -  - Назад -  - Вперед -