Строка1/файл1 -ключ строка2/файл2



В таблице 1.10 приведены некоторые ключи, используемые командой test,предназначенныедля проверки файлов, равенства строк и целых чисел.

Таблица 1.10

Ключи команды test

Выражение Команда test возвращает 0 (TRUE) , если …

Ключи для проверки файлов

-e  file file существует (вне зависимости от его типа)
-f file проверяемый file существует и являтся обычным (не каталог и не файл устройства)
-s file file существует и имеет ненулевой размер
-d file проверяемый file существует и является директорией (каталог)
-b file проверяемый file существует и является специальным блочным устройством (CD-ROM, floppy и пр.)
-c file проверяемый file существует и является символьным устройством (клавиатура, модем, звуковая карта и пр.)
-p file проверяемый file существует и является именованым каналом
-h file -L file проверяемый file существует и является символьной ссылкой
-Sfile проверяемый file существует и является сокетом
-t file проверяемый file связан с терминальным устройством (является стадартным устройством ввода (stdin, 0) или вывода (stdout, 1))
-r file проверяемый file существует и доступен для чтения пользователю, запустившему сценарий
-w file проверяемый file существует и доступен для записи пользователю, запустившему сценарий
-x file проверяемый file существует и доступен для выполнения пользователю, запустившему сценарий
-O file запускающий сценарий является владельцем file
-G file запускающий сценарий и проверяемый file принадлежат одной группе
-N file с момента последнего чтения file был изменен
file1 -nt file2 file1 былизменен ранее, чем file2
file1 -ot file2 file1 был изменен позже, чем file2
file1 -et file2 file1 является жесткой ссылкой на file2

Ключи для проверки и сравнения строк

-z  string string имеет длину, равную нулю
-n  string string имеет длину, отличную от нуля
string1 = string2 string1 == string2 string1 и string2 лексикографически равны
string1 != string2 string1 и string2 лексикографически не равны
string1 < string2 string1 лексикографически меньше string2 (то есть string1 и string2 отсортированы в порядке лексикографического возрастания)
string1 > string2 string1 лексикографически больше string2 (то есть string1 и string2 отсортированы в порядке лексикографического убывания)

Ключи для сравнения целых чисел

n1 –eq n2 числа n1 и n2 алгебраически эквивалентны
n1 –ne n2 числа n1 и n2 алгебраически не эквивалентны
n1 –gt n2 число n1 алгебраически больше, чем число n2
n1 –ge n2 число n1 алгебраически больше или эквивалентно числу n2
n1 –lt n2 число n1 алгебраически меньше, чем число n2
n1 –le n2 число n1 алгебраически меньше или эквивалентно числу n2

 

Результат проверки команды test может быть инвертирован при помощи использования символа ! , который изменяет результат тестирования: в случае успешной проверки код возврата будет равен 1 (FALSE – ложь).

Команда тестирования, представленная [ ] , имеет расширенный вариант:

[[ ]]

Внутри [[ ]] разрешено использование операторов && (логическое И), || (логическое ИЛИ), которые недопустимы в [ ].

Выражения в команде test могут комбинироваться с помощью следующих операций:

-а – логическое И;

-о – логическое ИЛИ.

Ниже приведены некоторые примеры использования команды test.

$ [ -s file.txt ] проверка, что file.txt не пустой;
$ [ str1 = str2 ] проверка, что строки str1 и str2 совпадают;
$ [ x –le y ] проверка, что x меньше или равно y.

 

Условный оператор if

Оператор if позволяет организовать проверку условий, основанную на проверке значений 0 (истина) и 1 (ложь). В общем случае оператор if имеет структуру:

if условие

then список

      [ elif условие

       then список ]

[ else список ]

Fi

Конструкции, указанные в [ ] не являются обязательными, а выделенные полужирным курсивом элементы являются служебным словам конструкции. Результат проверки, равный 0, воспринимается как истина, а равный 1 – как ложь.

Часть elif используется для проверки более, чем двух условий.

Если выполнено условие, то выполняется список.

Ниже приведен пример, демонстрирующий работу условного оператора if.

if [ $a –gt $b ]

then echo “a>b”

else echo “a<b”

fi

Здесь a и b – некоторые целые числа. Если a больше b, то на экран выводится запись a>b, в противном случае: a<b.

 

Коды завершения

Каждая выполняемая в shell команда после выполнения возвращает так называемый код завершения. Для просмотра кода завершения последней выполненной команды достаточно вызвать команду:

 $ echo $?

Общими системными командами используется два кода завершения:

0 – успешное завершение команды, ошибок нет;

1 – неудачное завершение команды, имеются ошибки.

Язык позволяет реализовать пользовательский код завершения shell-сценария (например, с использованием команды exit). Он может быть использован другим shell-сценарием или функцией языка shell. Завершение сценария с генерацией кода считается хорошим тоном в программировании.

 

Команда exit

Для завершения текущего процесса в shell имеется команда exit. Команда имеет следующий формат:

exit < число>

Если вывести команду без параметра, shell отобразит значение последней команды. Принято считать, что значение exit = 0 – успешное завершение (ошибок нет); exit = 1 – неудачное завершение (имеется ошибка).

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

$ exit 2

Параметр команды exit может принимать значение от 0 до 255.


Дата добавления: 2019-11-16; просмотров: 180; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!