Чтение онлайн

на главную - закладки

Жанры

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

Купер Мендель

Шрифт:

Пример 8-4. Различные представления числовых констант

#!/bin/bash

# numbers.sh: Различные представления числовых констант.

# Десятичное: по-умолчанию

let "dec = 32"

echo "десятичное число = $dec" # 32

# Вобщем-то ничего необычного.

#

Восьмеричное: числа начинаются с '0' (нуля)

let "oct = 032"

echo "восьмеричное число = $oct" # 26

# Результат печатается в десятичном виде.

# --------- ------ -- -------

# Шестнадцатиричное: числа начинаются с '0x' или '0X'

let "hex = 0x32"

echo "шестнадцатиричное число = $hex" # 50

# Результат печатается в десятичном виде.

# Другие основы счисления: ОСНОВА#ЧИСЛО

# ОСНОВА должна быть между 2 и 64.

# для записи ЧИСЛА должен использоваться соответствующий ОСНОВЕ диапазон символов,

# см. ниже.

let "bin = 2#111100111001101"

echo "двоичное число = $bin" # 31181

let "b32 = 32#77"

echo "32-ричное число = $b32" # 231

let "b64 = 64#@_"

echo "64-ричное число = $b64" # 4094

#

# Нотация ОСНОВА#ЧИСЛО может использоваться на ограниченном

#+ диапазоне основ счисления (от 2 до 64)

# 10 цифр + 26 символов в нижнем регистре + 26 символов в верхнем регистре + @ + _

echo

echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))

# 1295 170 44822 3375

# Важное замечание:

# --------------

# Использование символов, для записи числа, выходящих за диапазо,

#+ соответствующий ОСНОВЕ счисления

#+ будет приводить к появлению сообщений об ошибках.

let "bad_oct = 081"

# numbers.sh: let: oct = 081: value too great for base (error token is "081")

# Для записи восьмеричных чисел

допускается использовать

#+ только цифры в диапазоне 0 - 7.

exit 0 # Спасибо Rich Bartell и Stephane Chazelas, за разъяснения.

Часть 3. Углубленный материал

Глава 9. К вопросу о переменных

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

9.1. Внутренние переменные

Встроенные переменные $BASH

путь к исполняемому файлу Bash

bash$ echo $BASH

/bin/bash

$BASH_VERSINFO[n]

это массив, состоящий из 6 элементов, и содержащий информацию о версии Bash. Очень похожа на переменную $BASH_VERSION, описываемую ниже.

# Информация о версии Bash:

for n in 0 1 2 3 4 5

do

echo "BASH_VERSINFO[$n] = ${BASH_VERSINFO[$n]}"

done

# BASH_VERSINFO[0] = 2 # Major version no.

# BASH_VERSINFO[1] = 05 # Minor version no.

# BASH_VERSINFO[2] = 8 # Patch level.

# BASH_VERSINFO[3] = 1 # Build version.

# BASH_VERSINFO[4] = release # Release status.

# BASH_VERSINFO[5] = i386-redhat-linux-gnu # Architecture

# (same as $MACHTYPE).

$BASH_VERSION

версия Bash, установленного в системе

bash$ echo $BASH_VERSION

2.04.12(1)-release

tcsh% echo $BASH_VERSION

BASH_VERSION: Undefined variable.

Проверка переменной $BASH_VERSION -- неплохой метод проверки типа командной оболочки, под которой исполняется скрипт. Переменная $SHELL не всегда дает правильный ответ.

$DIRSTACK

содержимое вершины стека каталогов (который управляется командами pushd и popd)

Эта переменная соответствует команде dirs, за исключением того, что dirs показывает полное содержимое всего стека каталогов.

Поделиться:
Популярные книги

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Боярышня Евдокия

Меллер Юлия Викторовна
3. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Евдокия

Отдельный танковый

Берг Александр Анатольевич
1. Антиблицкриг
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Отдельный танковый

Русь. Строительство империи

Гросов Виктор
1. Вежа. Русь
Фантастика:
альтернативная история
рпг
5.00
рейтинг книги
Русь. Строительство империи

Легионер (пять книг цикла "Рысь" в одном томе)

Посняков Андрей
Рысь
Фантастика:
фэнтези
7.38
рейтинг книги
Легионер (пять книг цикла Рысь в одном томе)

Попаданка в деле, или Ваш любимый доктор

Марей Соня
1. Попаданка в деле, или Ваш любимый доктор
Фантастика:
фэнтези
5.50
рейтинг книги
Попаданка в деле, или Ваш любимый доктор

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

На распутье

Кронос Александр
2. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На распутье

Мымра!

Фад Диана
1. Мымрики
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Мымра!

Иной мир. Компиляция

Шарипов Никита
Иной мир
Фантастика:
боевая фантастика
фэнтези
5.00
рейтинг книги
Иной мир. Компиляция

Рота Его Величества

Дроздов Анатолий Федорович
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Рота Его Величества

Восемь бусин на тонкой ниточке

Михалкова Елена Ивановна
Настоящий детектив
Детективы:
прочие детективы
9.30
рейтинг книги
Восемь бусин на тонкой ниточке

Имперский Курьер

Бо Вова
1. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Имперский Курьер