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

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

Жанры

Linux-сервер своими руками

Колисниченко Денис Николаевич

Шрифт:

Для обозначения параметров командной строки используются специальные переменные, указанные в табл. 19.36.

Специальные переменные Таблица 19.36

Название переменной Значение
$0 Имя выполняемой команды. Для сценария — путь, указанный при его вызове. Если вы знакомы с языком программирования Pascal, эта переменная должна вам напоминать вызов функции ParamStr(0)
$n (где n – номер параметра, $1, $2, …) Обращение к параметру с номеров n. Для Pascal — это вызов функции ParamStr(n)
$# Число
параметров, которые были указаны при вызове сценария. Аналогична вызову функции ParamCount в Pascal
$* Все параметры, заключенные в кавычки: "$1 $2 …"
$@ Все параметры, каждый из которых заключен в кавычки "$1" "$2" …
$? Код завершения последней команды
$$ Номер текущего процесса (PID)
$! Номер(PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме)

Пример.

echo "Все параметры: "

echo $*

Интерпретатор bash поддерживает одномерные массивы с неограниченным числом элементов. В других оболочках существуют определенные ограничения на массивы, например, в ksh максимальное число элементов массива ограничено 1024-мя элементами.

Присвоить значение элементу массива можно с помощью такой конструкции:

Имя_массива[индекс]=значение

Например:

А[1]=23

А[3]=54

А[0]=77

Нумерация элементов начинается с ноля. Тип элементов массива, как и тип переменных, текстовый. Присвоить значение элементам массива можно также с помощью инструкции set. Например, выражение:

set –A array 3 56 77 12

аналогично выражениям:

array[0]=3

array[1]=56

array[2]=77

array[3]=12

Вышеприведенные способы инициализации массивов могут применяться как в bash, так и в ksh, а также и в других оболочках. Но, тем не менее, существует еще один способ, который работает только в bash:

array = ([0]=3 [3]=12 [2]=77 [1]=5б)

Обратиться к значению элемента можно следующим образом:

${имя_массива[индекс]}

Например, вывести значение первого (нулевого) элемента массива можно так:

echo {$array[0]}

Обратиться ко всем элементам массива сразу можно с помощью одного из выражений:

${имя_массива[*]}
или
${имя_массива[@]}

Если значение хотя бы одного элемента массива может содержать пробелы, используйте второе выражение:

echo ${array[@]}

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

Выражение export:

export имя

export имя=значение

export имя имя имя …

export имя=значение имя имя=значение…

Как видите, можно экспортировать уже инициализированную переменную (которой уже

присвоено значение), а можно выполнить инициализацию переменной непосредственно при экспорте. Экспортировать можно как одну переменную, так и целый список.

Для деактивизации переменной используется команда unset: unset имя

Каждому процессу доступны переменные оболочки, приведенные в табл. 19.37.

Переменные оболочки Таблица 19.37

Название переменной Значение
PWD Текущий каталог
UID Идентификатор пользователя, запустившего сценарий
REPLY Последняя строка, введенная с помощью команды read
RANDOM Случайное число в диапазоне от 0 до 32767
SECONDS Число секунд, прошедшее с момента запуска оболочки
IPS (Internal Filed Separator) Внутренний разделитель полей. Используется синтаксическим анализатором и командой read для разделения строчки на слова. По умолчанию его значение равно " \t\n", где: « » — пробел; «\t» — символ табуляции; ,«\n» — символ новой строки
HOME Домашний каталог
PATH Путь вызова
LOGNAME Имя пользователя, которое использовалось для входа в систему
MAIL Имя файла, в который поступает электронная почта
SHELL Имя интерпретатора команд
TERM Тип терминала пользователя

Пример.

echo "$НОМЕ"

19.7.5. Подстановка команд и арифметических выражений

В гл. 13 (п. 13.5) мы уже сталкивались с подстановкой команд. Тогда переменной DT присваивался результат выполнения команды date:

DT=`date`

Как я уже писал, при подстановке команд нужно использовать обратные одинарные кавычки (они расположены под символом тильды на клавиатуре). Подставлять можно не только одну команду, а целые списки команд:

USERS=`who | wd –l`

UP=`date; uptime`

В первом случае мы получим количество пользователей работающих в системе, а во втором — последовательно записанные результаты выполнения команд date и uptime.

Подставлять результаты выполнения можно не только в переменные, а и в другие команды, например:

grep `id –un` /etc/passwd

Данная команда ищет в файле /etc/passwd вхождение результата выполнения команды id –un

Подстановка арифметических выражений осуществляется с помощью конструкции $(( выражение )) Например:

А = $(( (10+51/2 ))

echo $A

При этом на экране вы увидите число 7, а не 7.5, потому что используется целочисленное вычисление. Пример. Количество часов, прошедшее с момента запуска оболочки: 

hrs = $(( $SECONDS/3600 ))

19.7.6. Управляющие структуры и циклы

К управляющим структурам относятся:

• Конструкция if-fi.

• Конструкция case-esac.

Конструкция if-fi
Поделиться:
Популярные книги

Город драконов

Звездная Елена
1. Город драконов
Фантастика:
фэнтези
6.80
рейтинг книги
Город драконов

Законы Рода. Том 11

Flow Ascold
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 11

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

ВоенТур 3

АЗК
3. Антиблицкриг
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
ВоенТур 3

Недотрога для темного дракона

Панфилова Алина
Фантастика:
юмористическое фэнтези
фэнтези
сказочная фантастика
5.00
рейтинг книги
Недотрога для темного дракона

Неудержимый. Книга V

Боярский Андрей
5. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга V

Семья. Измена. Развод

Высоцкая Мария Николаевна
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Семья. Измена. Развод

Истинная поневоле, или Сирота в Академии Драконов

Найт Алекс
3. Академия Драконов, или Девушки с секретом
Любовные романы:
любовно-фантастические романы
6.37
рейтинг книги
Истинная поневоле, или Сирота в Академии Драконов

Зеркало силы

Кас Маркус
3. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Зеркало силы

Релокант. Вестник

Ascold Flow
2. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. Вестник

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

Скандальная свадьба

Данич Дина
1. Такие разные свадьбы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Скандальная свадьба

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Адвокат Империи 2

Карелин Сергей Витальевич
2. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 2