Верно, если файл file1 имеет более позднее время модификации, чем file2.
• file1 -ot file2
Верно, если файл file1 старше, чем file2.
• file1 -ef file2
Верно, если файлы file1 и file2 имеют одинаковые номера устройств и индексных дескрипторов (inode).
• -o optname
Верно, если задействована опция оболочки optname. Пояснения см. на странице man bash.
• -z string
Верно, если длина строки равна нулю.
• -n string
Верно, если длина строки не равна нулю.
• string1 == string2
Верно, если строки совпадают. Вместо == может использоваться =.
• string1 !== string2
Верно, если строки не совпадают.
• string1 ‹ string2
Верно, если строка string1 лексикографически предшествует строке string2 (для текущей локали).
• string1 › string2
Верно, если строка string1 лексикографически стоит после строки string2 (для текущей локали).
• arg1 OP arg2
Здесь OP – это одна из операций арифметического сравнения: -eq (равно), -ne (не равно), -lt (меньше чем), -le (меньше или равно), -gt (больше), -ge (больше или равно). В качестве аргументов могут использоваться положительные или отрицательные целые.
Из этих элементарных условных выражений можно строить сколь угодно сложные с помощью обычных логических операций ОТРИЦАНИЯ, И и ИЛИ:
• !(expression)
Булевский оператор отрицания.
• expression1 -a expression2
Булевский оператор AND (И). Верен, если верны оба выражения.
• expression1 -o expression2
Булевский оператор OR (ИЛИ). Верен, если верно любое из двух выражений.
Такие же условные выражения используются и в операторах while и until, которые мы рассмотрим чуть ниже.
5.8.3 ОПЕРАТОР CASE
Формат оператора case таков:
case word in [[(] pattern [| pattern]…) list;;]… esac
Команда case вначале производит раскрытие слова word, и пытается сопоставить результат с каждым из образцов pattern поочередно. После нахождения первого совпадения дальнейшие проверки не производятся, выполняется список команд, стоящий после того образца, с которым обнаружено совпадение. Значение, возвращаемое оператором, равно 0, если совпадений с образцами не обнаружено. В противном случае возвращается значение, выдаваемое последней командой из соответствующего списка.
Следующий пример использования оператора case заимствован из системного скрипта /etc/rc.d/rc.sysinit.
case '$UTC' in
yes|true)
CLOCKFLAGS='$CLOCKFLAGS -u';
CLOCKDEF='$CLOCKDEF (utc)';
;;
no|false)
CLOCKFLAGS='$CLOCKFLAGS -localtime';
CLOCKDEF='$CLOCKDEF (localtime)';
;;