Строка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.

 

Обработка арифметических, логических и строковых выражений

Команда expr

Команда expr применяется в основном для вычисления выражений, но может быть применена и для обработки строк. Результат работы команды выводится на стандартный вывод stdout. Операнды выражения должны быть разделены пробелами, а метасимволы должны быть экранированы.

Команда имеет следующую структуру

expr< вычисляемое выражение >

В таблице 1.11 приведено описание операторов, используемых в команде expr (некоторые операторы экранированы).

 

Таблица 1.11

Операции команды expr

Оператор Описание
< выр1 > \| < выр2 > Если <выр1> не пустое и не нулевое, то возвращает его, иначе возвращает <выр2>
< выр1 > \& < выр2 > Если оба выражение непустые и ненулевые, то возвращает <выр1>, иначе возвращает 0
< выр1 > = < выр2 > < выр1 > \> < выр2 > < выр1 > \>= < выр2 > < выр1 > \< < выр2 > < выр1 > \<= < выр2 > < выр1 > != < выр2 > Возвращает результат целочисленного сравнения если оба выражения – целые; иначе возвращает результат лексического сравнения
< выр1 > + < выр2 > < выр1 > - < выр2 > Сложение и вычитание целочисленных аргументов
< выр1 > \* < выр2 > < выр1 > / < выр2 > < выр1 > % < выр2 > Умножение, деление и получение остатка от деления целочисленных аргументов
< выр1 > : < рег > Оператор сопоставления сопоставляет первый аргумент со вторым, который должен быть регулярным выражением. Обычно оператор сравнения возвращает число символов, удовлетворяющих образцу (0 при неудачном сравнении). Символы \( и \) могут применяться для выделения части первого аргумента

 

Ниже приведены некоторые примеры работы команды expr.

$ expr "$ Var_name" + 10 Если в переменной  $ Var_name  находится строка, состоящая из цифр, вернет значение записанного числа, увеличенного на 10, в противном случае укажет на ошибку.
$ expr "$ Var_name" : '.*' Возвращает количество символов в переменной Var_name; если $ Var_name=abсd, команда вернет 4;
$ expr “$filename” : '\(.*\).txt' Возвращает имя файла без расширения. Если значение переменной $filename=abc.txt, то функция вернет значение abc; если файл имеет расширение .doc, то функция вернет пустую строку, так как не найдет обязательный фрагмент .txt в имени файла.

Команда expr возвращает собственный код завершения. Команда возвращает код, равный 1, если результат проверки – истина, любое другое значение – в противном случае (следует обратить внимание, что эти коды обратны кодам завершения последней команды, заносимым в переменную ?).

Например, проверка равенства строки "Hello" переменной H="Hello" даст следующий результат:

$ H= " Hello "

$ expr $H = " Hello "

1

$ echo $?

0

$ expr $H = "Not"

0

$ echo $?

1

 

Команда let

Команда let производит арифметические операции над переменными и числами. В большинстве случаев, ее можно считать упрощенным вариантом команды expr.

В таблице 1.12 приведены некоторые операторы, использованные в команде let.

 

Таблица 1.12


Дата добавления: 2020-01-07; просмотров: 202; Мы поможем в написании вашей работы!

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






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