Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1 / Лекция 1. Язык командного интерпретатора Bash.pdf
Скачиваний:
10
Добавлен:
30.05.2025
Размер:
844 Кб
Скачать
☆

КОНСТРУКЦИИ УПРАВЛЕНИЯ ПОТОКОМ

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

Соседние файлы в папке lab1