- •СОДЕРЖАНИЕ
- •НАЧАЛЬНАЯ ИНФОРМАЦИЯ
- •ОСНОВНЫЕ СВОЙСТВА bash (major features)
- •ВЫВОД НА КОНСОЛЬ: команда echo
- •КОМАНДА echo (примеры использования)
- •СПЕЦИАЛЬНЫЕ СИМВОЛЫ И ЦИТИРОВАНИЕ
- •ВЫВОД НА КОНСОЛЬ: команда printf
- •ЧТЕНИЕ С КОНСОЛИ: команда read
- •РАБОТА С ПЕРЕМЕННЫМИ
- •ОСНОВНЫЕ ОПЕРАЦИИ
- •РАСКРЫТИЕ СКОБОК
- •ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
- •КОНСТРУКЦИИ УПРАВЛЕНИЯ ПОТОКОМ
- •УСЛОВНЫЙ ОПЕРАТОР IF
- •ПРОВЕРКА УСЛОВИЙ
- •УСЛОВНЫЙ ОПЕРАТОР IF ПРИ РАБОТЕ С ФАЙЛАМИ
- •УСЛОВНЫЙ ОПЕРАТОР IF (примеры использования)
- •УСЛОВНЫЙ ОПЕРАТОР IF (примеры использования)
- •ОПЕРАТОР МНОЖЕСТВЕННОГО ВЫБОРА CASE
- •ЦИКЛ FOR
- •КОМАНДА seq
- •ЦИКЛЫ WHILE/UNTIL и SELECT
- •МАССИВЫ в bash
- •РАБОТА С МАССИВАМИ
- •РАЗРАБОТКА bash-СКРИПТА (СЦЕНАРИЯ)
- •ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ
КОНСТРУКЦИИ УПРАВЛЕНИЯ ПОТОКОМ
bash поддерживаетследующиеконструкциидляуправленияпотоком (flow control):
if/else |
выполняетсписокоператоров еслизаданноеусловиеистинно/ложно |
for |
выполняетсписокоператоров заданноеколичество раз |
while |
выполняетсписокоператоров повторно дотехпор, показаданноеусловиеистинно |
until |
выполняетсписокоператоров повторно дотехпор, показаданноеусловиенестанет истинно |
case |
выполняетодинизнесколькихсписковоператороввзависимости отзначения переменной |
select |
позволяетпользователювыбратьодинвариантизсписка возможныхчерезменю |
14
УСЛОВНЫЙ ОПЕРАТОР IF
Общийсинтаксис: |
Синтаксис соднимусловием: |
if <условие1> |
if <условие> |
then |
then |
<оператор(ы)> |
<оператор(ы)> |
[elif <условие2> |
else |
then <оператор(ы)>] |
<оператор(ы)> |
[else |
fi |
<оператор(ы)>] |
|
fi |
|
Альтернативнаяинтерпретация оператора if: if <команда_завершилась_успешно>
then
<нормальный_ход_процесса>
else
<ошибочный_ход_процесса>
fi
Специальная shell-переменная, содержащая значение статуса завершенияпоследнейвыполненнойкоманды: $?
15
Синтаксис оператора if с then воднойстроке: if <условие>; then
<оператор(ы)>
else
<оператор(ы)>
fi
Комбинирование статусов завершения: if <выражение1> && <выражение2> then
…
fi
if <выражение1> || <выражение2> then
…
fi
ПРОВЕРКА УСЛОВИЙ
Способы проверкиусловий:
[...] – конструкция, доступнаявомногихверсиях Bourne shell, аналогкоманды test
[[...]] – альтернативная, более новая конструкция, позволяет писать логические выражения внутри себя, а также использовать регулярныевыражения
[ <условное_выражение> ] – возвращает статус завершения, сигнализирующий о том, истинно выражение или нет (необходимыпробелыпослеоткрывающейскобкиипередзакрывающей)
Операторысравнениястрок
Выражение |
Истинно, если… |
str1 = str2 |
str1 совпадает с str2 |
str1 != str2 |
str1 не совпадает с str2 |
str1 < str2 |
str1 меньше чем str2 |
str1 > str2 |
str1 больше чем str2 |
-n str1 |
str1 не пустая (имеет длину больше 0) |
-z str1 |
str1 пустая (имеет длину 0) |
|
|
Операторысравненияцелыхчисел
Оператор |
Сравнение |
-lt |
Меньше чем |
-le |
Меньше чем или равно |
-eq |
Равно |
-ge |
Больше чем или равно |
-gt |
Больше чем |
-ne |
Не равно |
16
УСЛОВНЫЙ ОПЕРАТОР IF ПРИ РАБОТЕ С ФАЙЛАМИ
Выражение |
Истинно, если… |
-a <файл> |
<файл> существует |
-d <файл> |
<файл> существует и это директория |
-e <файл> |
<файл> существует (аналог –a) |
-f <файл> |
<файл> существует и это регулярный файл |
|
(не директория или спец. тип файлов) |
-r <файл> |
У вас есть права на чтение <файл> |
-s <файл> |
<файл> существует и он не пустой |
-w <файл> |
У вас есть права на запись <файл> |
-x <файл> |
У вас есть права на исполнение <файл>, или права |
|
на поиск внутри директории, если это директория |
-N <файл> |
<файл> был модифицирован с тех пор как прочитан |
-O <файл> |
Вы являетесь владельцем <файл> |
-G <файл> |
<файл> принадлежит одной из ваших групп |
<файл1> -nt |
<файл1> новее <файл2> (время модификации) |
<файл2> |
|
<файл1> -ot |
<файл1> старее <файл2> (время модификации) |
17 <файл2>
Пример использования:
if [ -d $fname ]; then
echo ʺ$fname is a directoryʺ else
echo ʺ$fname is not a directoryʺ
fi
