Строка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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!