Сравнение целых чисел
-eq
равно
if [ «$a» -eq «$b» ]
-ne
не равно
if [ «$a» -ne «$b» ]
-gt
больше
if [ «$a» -gt «$b» ]
-ge
больше или равно
if [ «$a» -ge «$b» ]
-lt
меньше
if [ «$a» -lt «$b» ]
-le
меньше или равно
if [ «$a» -le «$b» ]
<
меньше (внутри двойных круглых скобок )
((«$a» < «$b»))
<=
меньше или равно (внутри двойных круглых скобок)
((«$a» <= «$b»))
>
больше (внутри двойных круглых скобок)
((«$a» > «$b»))
=
больше или равно (внутри двойных круглых скобок)
((«$a» >= «$b»))
Сравнение строк
=
равно
if [ «$a» = «$b» ]
==
равно
if [ «$a» == «$b» ]
Синоним оператора =.
[[ $a == z* ]] # истина, если $a начинается с символа «z» (сравнение по шаблону)
[[ $a == «z» ]] # истина, если $a равна z
[ $a == z* ] # имеют место подстановка имен файлов и разбиение на слова
[ «$a» == «z» ] # истина, если $a равна z
!=
не равно
if [ «$a» != «$b» ]
Этот оператор используется при поиске по шаблону внутри [[ … ]].
<
меньше, в смысле величины ASCII-кодов
if [[ «$a» < «$b» ]]
if [ «$a» \< «$b» ]
Обратите внимание! Символ «<» необходимо экранировать внутри [ ].
>
больше, в смысле величины ASCII-кодов
if [[ «$a» > «$b» ]]
if [ «$a» > «$b» ]
Обратите внимание! Символ «>» необходимо экранировать внутри [ ].
-z
строка «пустая», т.е. имеет нулевую длину
-n
строка не «пустая».
Логические операции:
! – отрицание;
–a или && – логическое И;
–o или || – логическое ИЛИ.
Элементарные условные выражения для файлов:
-e — файл существует;
-f — обычный файл (не каталог и не файл устройства);
-s — ненулевой размер файла;
-d — файл является каталогом;
-b — файл является блочным устройством (floppy, cdrom и т.п.);
-c — файл является символьным устройством (клавиатура, модем, звуковая карта и т.п.);
-p — файл является каналом;
-h — файл является символической ссылкой;
-L — файл является символической ссылкой;
-S — файл является сокетом;
-t — файл связан с терминальным устройством;
-r — файл доступен для чтения (пользователю, запустившему сценарий);
-w — файл доступен для записи (пользователю, запустившему сценарий);
-x — файл доступен для исполнения (пользователю, запустившему сценарий);
-g — (sgid) флаг для файла или каталога установлен;
-u — (suid) флаг для файла установлен;
-k — флаг sticky bit установлен;
-O — вы являетесь владельцем файла (пользователь запустивший сценарий);
-G — вы принадлежите к той же группе, что и файл (пользователь запустивший сценарий);
-N — файл был модифицирован с момента последнего чтения;
file1 -nt file2 – file1 более новый, чем file2;
file1 -ot file2 – file1 более старый, чем file2;
file1 -ef file2 – file1 и file2 являются «жесткими» ссылками на один и тот же файл.
Элементарные условные выражение для сравнения строк:
-z str – длина строки str равна 0;
-n str – длина строки str не равно 0;
str1 == str2 или str1 = str2 – строки совпадают;
str1 !== str2 или str1 != str2 – строки не совпадают;
str1 < str2 – str1 предшествует str2 в лексикографическом порядке; str1 > str2 – str1 следует за str2 в лексикографическом порядке.