Home

Page 20
Page 20
background image

U

ser

  

A

nd

LINUX

Programming

ualinux.com

20

U & L  

1 1 - 0 1

– делаем что-то другое». Чтобы эффективно его исполь-

зовать, сначала нужно научиться пользоваться командой 

test. Эта программа выполняет проверку условия (напри-

мер, существует ли файл, есть ли необходимые права до-

ступа). Вот переписанный вариант bar.sh :

#!/bin/bash
if test -f /etc/foo
then

# Файл существует, копируем его и печатаем сообще-

ние на экране

cp /etc/foo .
echo «Готово».

else # Файл не существует, поэтому мы печатаем сооб-

щение

#и завершаем работу
echo «Этот файл не существует.»
exit
fi 

Обратите внимание на переводы строки после then и 

else. Они не являются обязательными, но  делают чтение 

кода гораздо более простым в том смысле, что делают ло-

гику программы более наглядной. Теперь запустите про-

грамму. Если у вас есть файл /etc/foo – он будет скопиро-

ван, в противном случае будет напечатано сообщение об 

ошибке. Команда test проверяет существование файла. 

Ключ -f проверяет, является ли аргумент обычным файлом. 

Ниже приведен список опций test (Не стоит пытаться за-

помнить их все, т.к. это все равно нереально. Его всегда 

можно посмотреть в руководстве команды test – man test. 

Прим. перев.):

КЛЮЧИ КОМАНДЫ TEST

:

-d

 проверяет наличие файла и то, что он является ка-

талогом

-e 

проверяет существование файла

-f 

проверяет наличие файла и то, что это обычный 

файл

-g 

проверяет наличие у файла SGID-бита

-r

 проверяет наличие файла и то, что он доступен на 

чтение

-s 

проверяет наличие файла и то, что его размер 

больше нуля

-u

 проверяет наличие у файла SUID-бита

-w

 проверяет наличие файла и то, что он доступен на 

запись

-x

 проверяет наличие файла и наличие у него прав на 

запуск

Оператор else используется, когда вы хотите, чтобы 

ваша программа еще что-то делала, если первое условие 

не выполняется. Существует также оператор elif, который 

может использоваться вместо еще одного if. elif означает 

«else if». Он используется, когда первое условие не выпол-

няется, и вы хотите проверить еще одно условие.

Если вам не нравится приведенная форма записи if и 

test, есть сокращенный вариант.

Например, код:

if test -f /etc/foo
then

Можно записать вот так:

if [ -f /etc/foo ]; then

Квадратные скобки – это еще один вариант записи test. 

Если у вас есть опыт в программировании на C, этот син-

таксис для вас может быть более удобным. Обратите вни-

мание на наличие пробелов до и после каждой из скобок 

(Наличие пробелов объясняется просто: открывающая 

квадратная скобка – это команда оболочки. В этом можно 

легко убедиться набрав в консоли команду which [ . А раз 

это отдельная команда, то ее нужно отделить пробелами 

от остальных опций. – Прим. перев.). Точка с запятой: «;» го-

ворит оболочке о завершении одного оператора и начале 

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

работать так, как будто находится в отдельной строке. Это 

делает код более удобным для чтения и, естественно, та-

кая запись необязательна. Если вы предпочитаете другой 

вариант записи – then можно сразу поместить в другой 

строке.

Если вы используете переменные – их нужно помещать 

в кавычки. Например:

if [ «$name» -eq 5 ]; then

оператор -eq будет объяснен далее в этой статье.

while … do … done

Оператор while используется для организации циклов. 

Он работает так «пока (while) условие истинно, делать что-

то». Рассмотрим это на примере:

#!/bin/bash
while true; do
echo 

«Нажмите CTRL-C для выхода»

done

true – это тоже программа. Единственное, что она тут 

делает – это запускает тело цикла снова и снова. Исполь-

зование true считается медленным, потому что ваш скрипт 

должен запускать ее раз за разом. Можно использовать 

альтернативный вариант:

#!/bin/bash
while :; do


Copyright © 2021 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.