Оператор test и условные выражения bash
Оператор test
test -e <файл>
или
[ -е <файл> ]
expr - для проверка целочисленных значений. Условные выражения можно комбинировать с помощью обычных логических операций:
- ! (выражение) —отрицание;
- выражение1 -а выражение2 — логическое И (and);
- выражение1 -о выражение2 — логическое ИЛИ (or).
####Основные условные выражения для файлов####
-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