Linux-сервер своими руками
Шрифт:
Для обозначения параметров командной строки используются специальные переменные, указанные в табл. 19.36.
Специальные переменные Таблица 19.36
Название переменной | Значение |
---|---|
$0 | Имя выполняемой команды. Для сценария — путь, указанный при его вызове. Если вы знакомы с языком программирования Pascal, эта переменная должна вам напоминать вызов функции ParamStr(0) |
$n (где n – номер параметра, $1, $2, …) | Обращение к параметру с номеров n. Для Pascal — это вызов функции ParamStr(n) |
$# | Число
|
$* | Все параметры, заключенные в кавычки: "$1 $2 …" |
$@ | Все параметры, каждый из которых заключен в кавычки "$1" "$2" … |
$? | Код завершения последней команды |
$$ | Номер текущего процесса (PID) |
$! | Номер(PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме) |
Пример.
Интерпретатор bash поддерживает одномерные массивы с неограниченным числом элементов. В других оболочках существуют определенные ограничения на массивы, например, в ksh максимальное число элементов массива ограничено 1024-мя элементами.
Присвоить значение элементу массива можно с помощью такой конструкции:
Например:
Нумерация элементов начинается с ноля. Тип элементов массива, как и тип переменных, текстовый. Присвоить значение элементам массива можно также с помощью инструкции set. Например, выражение:
аналогично выражениям:
Вышеприведенные способы инициализации массивов могут применяться как в bash, так и в ksh, а также и в других оболочках. Но, тем не менее, существует еще один способ, который работает только в bash:
Обратиться к значению элемента можно следующим образом:
Например, вывести значение первого (нулевого) элемента массива можно так:
Обратиться ко всем элементам массива сразу можно с помощью одного из выражений:
Если значение хотя бы одного элемента массива может содержать пробелы, используйте второе выражение:
Особое значение имеют переменные окружения. У каждого процесса есть своя среда — множество доступных ему переменных. Обыкновенные переменные доступны только из локального процесса. Чтобы использовать их значения в порождаемых процессах, нужно использовать встроенную команду 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 | Имя пользователя, которое использовалось для входа в систему |
Имя файла, в который поступает электронная почта | |
SHELL | Имя интерпретатора команд |
TERM | Тип терминала пользователя |
Пример.
19.7.5. Подстановка команд и арифметических выражений
В гл. 13 (п. 13.5) мы уже сталкивались с подстановкой команд. Тогда переменной DT присваивался результат выполнения команды date:
Как я уже писал, при подстановке команд нужно использовать обратные одинарные кавычки (они расположены под символом тильды на клавиатуре). Подставлять можно не только одну команду, а целые списки команд:
В первом случае мы получим количество пользователей работающих в системе, а во втором — последовательно записанные результаты выполнения команд date и uptime.
Подставлять результаты выполнения можно не только в переменные, а и в другие команды, например:
Данная команда ищет в файле /etc/passwd вхождение результата выполнения команды id –un
Подстановка арифметических выражений осуществляется с помощью конструкции $(( выражение )) Например:
При этом на экране вы увидите число 7, а не 7.5, потому что используется целочисленное вычисление. Пример. Количество часов, прошедшее с момента запуска оболочки:
19.7.6. Управляющие структуры и циклы
К управляющим структурам относятся:
• Конструкция if-fi.
• Конструкция case-esac.