# lilо

А если GRUB:

# grub-install /dev/hda

Теперь перезагрузите компьютер (reboot) — ваша система успешно восстановлена после клонирования.

<p>Глава 8</p><p>Язык командного интерпретатора</p>

Для автоматизации часто выполняемых работ по обслуживанию системы вам понадобится объединять команды в сценарии. С простейшими сценариями, обеспечивающими последовательное выполнение перечисленных команд, вы уже познакомились в гл. 3. Уточню только, как система обрабатывает сценарии. Она ищет в первой строке файла сценария выражение

#!/абсолютный/путь/к/программе/интерпретатору/сценария

и передает сценарий ей на обработку. Как правило, эта программа — либо одна из установленных в системе оболочек (например, #!/bin/tcsh), либо один из интерпретирующих языков (#!/usr/bin/perl), либо ваш собственный интерпретатор: #!/usr/bin/my_program. Если сценарий предназначен для обработки оболочкой sh, то ее имя указывать необязательно. Между символами # и ! не должно быть пробелов.

Чтобы непосредственно запустить файл сценария на выполнение, вы должны иметь полномочия на исполнение этого файла. Если он доступен вам только для чтения, выполнить его можно командой

$ /программа/обработчик -f <имя_файла>

Эта глава посвящена языку программирования, встроенному в оболочку bash.

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

<p>8.1. Параметры</p>

Вместо переменных, как и обычных языках программирования, в bash используется понятие параметра. Именем параметра может быть: слово, состоящее из латинских букв, цифр и знаков подчеркивания, начинающееся с буквы; число; один из специальных символов; *, #, ?, $, !, 0, _.

Тип всех параметров — строковый. Если параметру присвоено значение (хотя бы пустая строка), то говорят, что он задан или установлен. Чтобы сослаться на значение параметра, нужно поставить символ $ перед его именем:

$ echo $0

bash

Параметры делятся на:

♦ переменные оболочки — о них рассказано в п. 3.4.3;

♦ позиционные параметры — их имена представляют собой натуральное число, а значениями служат аргументы с соответствующими номерами, начиная с 1, переданные сценарию или самой оболочке при их запуске;

♦ специальные параметры — их именами служат перечисленные специальные символы, а назначение сведено в таблицу 8.1. Эти параметры — шаблоны, подстановку которых производит оболочка.

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

НазваниеПодстановка
$0Имя выполняемого сценария (или, в интерактивном режиме, — самой оболочки)
$#Количество позиционных параметров, переданных сценарию
$_Последний аргумент предыдущей из выполнявшихся команд
$?Код завершения последней выполненной команды (напоминаю, что значение 0 говорит об успешном завершении, другое — об ошибочном)
$$Номер текущего процесса (PID)
$!Номер (PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме)
$*Все позиционные параметры, слитые в одну строку: «$*» эквивалентно «$1x$2x…,$n», где x — первый символ значения переменной IFS (internal field separator), по умолчанию — пробел
$@Все позиционные параметры, подлежащие дальнейшему разбору: «$@» эквивалентно «$1» «$2» ... «$n»

Напоминаю, что специальные символы в значениях параметров нужно экранировать. Экранировать одиночный символ можно символом «\» (обратный слэш), несколько — апострофами или двойными кавычками. Разница в том, что внутри двойных кавычек выполняются подстановки значений: сравните вывод команд echo '$0' и echo "$0".

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

echo -n "Продолжать? (y/n): "

read yesno

echo $yesno

Перейти на страницу:

Все книги серии Полное руководство

Похожие книги