17.2. Применение логических операторов при осуществлении проверки

17.2. Применение логических операторов при осуществлении проверки

Итак, проверка прав доступа к файлу была осуществлена, но иногда возникает необходимость в сравнении различных прав доступа. Чтобы реализовать подобную проверку интерпретатор shell предлагает три типа логических операторов;

-a Логическое AND, возвращает истину, если обе части оператора принимают истинное значение -o Логическое OR, возвращает истину, если какая?либо из частей оператора может принимать истинное значение ! Логическое NOT, возвращает истину, если условие ложно

А теперь выполним сравнение следующих файлов:

-rw?r--r-- 1 root root 0 May 15 11:29 scores.txt

-rwxr?xr—- 1 root root 0 May 15 11:49 results.txt

В следующем примере проверяется, установлены ли для файлов права чтения.

$ [ -w results.txt -a -w scores.txt ]

$ echo $?

0

Ответ звучит утвердительно.

Чтобы проверить, установлены ли для какого?либо из файлов права выполнения, воспользуйтесь логическим оператором OR.

$ [ -х results.txt -о -x scores.txt ]

$ echo $?

0

Файл scores.txt не является исполняемым, а файл results.txt — исполняемый. Чтобы проверить, установлены ли для файла results.txt права записи и выполнения, примените следующую команду:

$ [ -w results.txt -a -x results.txt ]

$ echo $?

0

В данном случае получается утвердительный ответ.