Колисниченко Денис Николаевич
Шрифт:
Сценарий выведет на экран:
19.7.4. Переменные и массивы
Пример простейшей переменной мы уже рассмотрели выше. Переменные в bash не нуждаются в предварительном описании, как в других языках, например, в том же Pascal. Все переменные в bash — текстовые. Имя переменной должно начинаться с буквы и может состоять из латинских букв, цифр, знака подчеркивания. Нельзя определять функцию и переменную с одинаковыми именами. Чтобы воспользоваться значением переменной, нужно использовать символ доллара перед именем переменной:
Как я уже говорил, все переменные текстовые. Например, когда вы присваиваете переменной значение VAR=13, то это будет не числовое значение, а строка из двух символов. Если присваиваемое значение имеет пробелы, его нужно взять в кавычки:
Присвоить значение переменной можно с помощью встроенной команды read:
Параметр –n команды echo не выводит символ новой строки в конце сообщения «Enter value:», то есть не переводит строку. Команда read читает значение, введенное пользователем с клавиатуры, и записывает его в переменную х. Последняя команда выводит только что введенное значение. При использовании команды read можно указывать несколько переменных:
Пользователь должен ввести значения переменных, разделяя их пробелами. Для окончания ввода нужно нажать «Enter». Если введено меньше значений, чем нужно, оставшимся переменным будет присвоена пустая строка. А если больше, то лишние значения будут проигнорированы.
Интерпретатор bash использует следующие метасимволы, имеющие для него особое значение:
Для того, чтобы использовать эти символы как они есть, нужно их цитировать с помощью символа \. Например, символ перевода строки можно цитировать как \n, символ табуляции как \t, а символ вопроса как \?
Особое значение при присваивании переменным значений имеют кавычки. Все символы, заключенные в одинарные кавычки ' ' представляют самих себя. Между двойными кавычками " " выполняются команды и подстановки значений. Символы "\", ",", " ' ", "$" могут цитироваться с помощью обратной наклонной черты: \\, \$, \'
Для обозначения параметров командной строки используются специальные переменные, указанные в табл. 19.36.
Специальные переменные Таблица 19.36
Название переменной | Значение |
---|---|
$0 | Имя выполняемой команды. Для сценария — путь, указанный при его вызове. Если вы знакомы с языком программирования Pascal, эта переменная должна вам напоминать вызов функции ParamStr(0) |
$n (где n – номер параметра, $1, $2, …) | Обращение к параметру с номеров n. Для Pascal — это вызов функции ParamStr(n) |
$# | Число параметров, которые были указаны при вызове сценария. Аналогична вызову функции ParamCount в Pascal |
$* | Все параметры, заключенные в кавычки: "$1 $2 …" |
$@ | Все параметры, каждый из которых заключен в кавычки "$1" "$2" … |
$? | Код завершения последней команды |
$$ | Номер текущего процесса (PID) |
$! | Номер(PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме) |
Пример.
Интерпретатор bash поддерживает одномерные массивы с неограниченным числом элементов. В других оболочках существуют определенные ограничения на массивы, например, в ksh максимальное число элементов массива ограничено 1024-мя элементами.
Присвоить значение элементу массива можно с помощью такой конструкции:
Например:
Нумерация элементов начинается с ноля. Тип элементов массива, как и тип переменных, текстовый. Присвоить значение элементам массива можно также с помощью инструкции set. Например, выражение:
аналогично выражениям:
Вышеприведенные способы инициализации массивов могут применяться как в bash, так и в ksh, а также и в других оболочках. Но, тем не менее, существует еще один способ, который работает только в bash:
Обратиться к значению элемента можно следующим образом:
Например, вывести значение первого (нулевого) элемента массива можно так:
Обратиться ко всем элементам массива сразу можно с помощью одного из выражений:
Если значение хотя бы одного элемента массива может содержать пробелы, используйте второе выражение: