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

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

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

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

echo '$0'
и
echo "$0"
.

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

read
:

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

read yesno

echo $yesno

Ключ – n

команды
echo
не выводит символ новой строки в конце сообщения, то есть не переводит строку. Команда
read
читает значение, введённое пользователем с клавиатуры, и записывает его в переменную
yesno
. Последняя команда выводит только что введенное значение.

Одной командой

read
можно прочитать несколько переменных:

read name middle lastname

Пользователь должен ввести значения переменных, разделяя их пробелами, и для окончания ввода нажать <Ввод>. Если введено меньше значений, чем нужно, оставшимся переменным будет присвоена пустая строка. Если больше, то весь остаток строки будет присвоен последней из перечисленных переменных.

8.2. Подстановки

Кроме подстановки обычных переменных (п.3.4.4) и раскрытия шаблонов имен файлов (п.3.4.5), оболочка bash умеет выполнять еще и такие подстановки:

♦ Подстановка тильды:

~ заменяется на имя домашнего каталога пользователя, запустившего сценарий;

~+ заменяется на путь к текущему каталогу;

~- заменяется на путь к предыдущему каталогу.

♦ Раскрытие скобок:

строка1{строка2,строка3...}строкаN
заменяется на:
строка1строка2строкаN строка1строка3строкаN ...

Пробелов внутри скобок быть не должно. Эта функция полезна, когда нужно применить одну команду к нескольким файлам, не подходящим под общий шаблон:

$ cat /home/den/linuxbook/{intro,param,subst} > glava8

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

$((выражение))
или
$[выражение]
— эквивалентные формы записи. Внутри выражения выполняются подстановки параметров. Приоритет арифметических операций — обычный, подробнее см.
man bash,
секция ARITHMETIC EVALUATION.

Например, количество часов, прошедшее с момента запуски оболочки, можно подсчитать командой:

$ echo $(( $SECONDS/3600 ))

8.3. Массивы

Интерпретатор bash поддерживает одномерные массивы с неограниченным числом

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

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

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

$ weekday[0]=Понедельник

$ weekday[4]=Пятница

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

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

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

$ echo ${weekday[0]}

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

${имя_массива[*]}
или
${имя_массива[@]}
, например:

$echo ${weekday[*]}

Понедельник Пятница

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

Можно инициализировать массив целиком: команда

$ weekday=(Пн Вт Ср Чт Пт Сб Вс)

эквивалентна списку

$ weekday[0]=Пн; weekday[1] =Вт; ... weekday[6] =Вс

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

$ holidays= ([0]=Sunday [6]=Saturday)

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

Напоминаю (п.3.4.7), что список команд — это одиночная команда, конвейер или последовательность команд/конвейеров, разделенных одним из операторов: ; && ||, завершенная точкой с запятой. Не забывайте ставить точку с запятой даже после одиночной команды, терять ее — типичная ошибка начинающих программистов.

В синтаксис следующих команд квадратные скобки не входят: они ограничивают необязательные выражения.

8.4.1. Условные операторы

Оператор варианта case

Синтаксис:

case значение in

 [шаблон1) список1;;

 шаблон2 | шаблон3) список2;; ]

esac

Ищется первый шаблон, совпадающий со значением. Если он найден, то выполняется соответствующий ему список команд, завершенный двумя символами «;». Шаблон и список разделяются символом «)». Одному списку команд может соответствовать несколько шаблонов, тогда они разделяются символом «|».

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

Путь эльдар: Омнибус

Торп Гэв
Warhammer 40000
Фантастика:
эпическая фантастика
4.50
рейтинг книги
Путь эльдар: Омнибус

Цивилизация статуса (сборник)

Шекли Роберт
Сборники Роберта Шекли
Фантастика:
фэнтези
8.22
рейтинг книги
Цивилизация статуса (сборник)

Легенды древнего Хенинга (сборник)

Олди Генри Лайон
Фантастика:
научная фантастика
5.00
рейтинг книги
Легенды древнего Хенинга (сборник)

Франкенштейн: Антология

Шелли Мэри
1. Лучшее
Фантастика:
социально-философская фантастика
научная фантастика
ужасы и мистика
7.43
рейтинг книги
Франкенштейн: Антология

Аальхарнская трилогия. Трилогия

Петровичева Лариса
Фантастика:
фэнтези
7.87
рейтинг книги
Аальхарнская трилогия. Трилогия

НКВД-МВД СССР в борьбе с бандитизмом и вооруженным националистическим подпольем на Западной Украине, в Западной Белоруссии и Прибалтике (19

Кокурин А. И.
Научно-образовательная:
история
5.00
рейтинг книги
НКВД-МВД СССР в борьбе с бандитизмом и вооруженным националистическим подпольем на Западной Украине, в Западной Белоруссии и Прибалтике (19

От Пекина до Берлина. 1927–1945

Чуйков Василий Иванович
Маршалы Сталина
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
От Пекина до Берлина. 1927–1945

"Фантастика 2025-106" Компиляция. Книги 1-15

Александрова Марина
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
альтернативная история
постапокалипсис
фэнтези
5.00
рейтинг книги
Фантастика 2025-106 Компиляция. Книги 1-15

Африканский казак

Лаптухин Виктор Владимирович
Приключения:
исторические приключения
5.00
рейтинг книги
Африканский казак

Прозрение (сборник)

Ле Гуин Урсула Кребер
12. Вся Ле Гуин
Фантастика:
фэнтези
6.25
рейтинг книги
Прозрение (сборник)

Барон меняет правила

Ренгач Евгений
2. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон меняет правила

Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Коллектив авторов
Warhammer Fantasy Battles
Фантастика:
фэнтези
5.00
рейтинг книги
Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Золотой ворон

Сакавич Нора
5. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Золотой ворон

Том 38. Полное собрание сочинений.

Толстой Лев Николаевич
Проза:
классическая проза
5.00
рейтинг книги
Том 38. Полное собрание сочинений.