1 сентября 2011 г.

bash: условные выражения

# -a file
Верно, если файл с именем file существует.

# -b file
Верно, если file существует и является специальным файлом блочного устройства.

# -c file
Верно, если file существует и является специальным файлом символьного устройства.

# -d file
Верно, если file существует и является каталогом.

# -e file
Верно, если файл с именем file существует.

# -f file
Верно, если файл с именем file существует и является обычным файлом.

# -g file
Верно, если файл с именем file существует и для него установлен бит смены группы.

# -h file или -L file
Верно, если файл с именем file существует и является символической ссылкой.

# -k file
Верно, если файл с именем file существует и для него установлен "sticky'' bit.

# -p file
Верно, если файл с именем file существует и является именованным каналом (FIFO).

# -r file
Верно, если файл с именем file существует и для него установлено право на чтение

# -s file
Верно, если файл с именем file существует и его размер больше нуля.

# -t fd
Верно, если дескриптор файла fd открыт и указывает на терминал.

# -u file
Верно, если файл с именем file существует и для него установлен бит смены пользователя.

# -w file
Верно, если файл с именем file существует и для него установлено право на запись.

# -x file
Верно, если файл с именем file существует и является исполняемым.

# -O file
Верно, если файл с именем file существует и его владельцем является пользователь, на которого указывает эффективный идентификатор пользователя.

# -G file
Верно, если файл с именем file существует и принадлежит группе, определяемой эффективным идентификатором группы.

# -S file
Верно, если файл с именем file существует и является сокетом.

# -N file
Верно, если файл с именем file существует и изменялся с тех пор, как был последний раз прочитан.

# file1 -nt file2
Верно, если файл 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 (ИЛИ). Верен, если верно любое из двух выражений.