Оператор test и условные выражения bash


Оператор test

test -e <файл>

или

[ -е <файл> ]

expr - для проверка целочисленных значений. Условные выражения можно комбинировать с помощью обычных логических операций:

####Основные условные выражения для файлов####

-d - файл файл существует и является каталогом

- файл существует

-f - файл существует и является обычным файлом

-L - файл существует и является символической ссылкой

-r - файл существует и доступен для чтения

-w - файл существует и доступен для записи

- файл существует и является исполняемым

-s - файл существует и его размер больше 0

-N - файл существует и изменился со времени последнего чтения

-S - файл существует и является сокетом

-c - файл существует и является сисвольным устройством

-b - файл существует и является блочным устройством

-p - файл существует и является pipe

-h - файл существует и является символической ссылкой

-t - файл(дескриптор) ассоциирован с терминальным устройство

-g - sgid установлен для файла или директории

-u - suid установлен для файла

-O - пользователь является владельцем файла

-G - gid такой же как ваш

** file1 -nt file2 ** время модификации file1 позже чем file2

** file1 -ot file2 ** время модификации file1 раньше чем file2

** file1 -ef file2 ** жесткая ссылка на file2

####Элементарные условные выражения для сравнения строк####

-z - строка длина строки равна 0

-n - строка длина строки не равна 0

str1 == str2 - строки совпадают

str1 !== str2 - строки не совпадают

str1 < str2 - строка1 предшествует строке2 в лексикографическом порядке. (алфавит соответствует текущей локали)

стр1 > стр2 - строка1 следует за строкой2 в лексикографическом порядке

####Арифметическое проверки####

-eq — равно;

-nе — не равно;

-It — меньше;

-lе — меньше или равно;

-gt — больше;

-ge — больше или равно


Примеры

$ test -f /home/file/.txt && rm /home/file/.txt || echo "File not exist"

или

if [ -f /home/file/.txt ]
then
    rm /home/file/.txt
else
    echo "File not exist"
fi