Russian English German Ukrainian

Компьютерная помощь

(066) 72-00-654     (098) 44-74-068

г. Днепр

ж/м Левобережный-3

bash: Логические операции, выражения, операторы

В bash есть много операторов для описания условных выражений и логических операций и их синтаксис не всегда привычен, так что не лишним будет иметь шпаргалку.

Логические операции:

! – отрицание;
–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 в лексикографическом порядке.

Арифметическое условное выражение:

-eq – равно;
-ne – не равно;
-lt – меньше;
-le – меньше или равно;
-gt – больше;
-ge – больше или равно;
< — меньше (внутри двойных круглых скобок);
<= — меньше или равно (внутри двойных круглых скобок);
> — больше (внутри двойных круглых скобок);
>= — больше или равно (внутри двойных круглых скобок);

Битовые операции:

<< - сдвигает на 1 бит влево (умножение на 2);
<<= - сдвиг-влево-равно; Например let "x <<= 2" значение переменной x сдвигается влево на 2 бита (умножается на 4);
>> - сдвиг вправо на 1 бит (деление на 2);
>>= - сдвиг-вправо-равно (имеет смысл обратный <<=);
& - по-битовое И (AND);
&= - по-битовое И-равно;
| - по-битовое ИЛИ (OR);
|= - по-битовое ИЛИ-равно;
~ - по-битовая инверсия;
! - По-битовое отрицание;
^ - по-битовое исключающее или (XOR);
^= - по-битовое исключающее-или-равно;

Команды возвращающие код возврата:

test - используется для логического сравнения (например test -f /home/kyrych/readme вернет истину если readme - обычный файл);
[ ] - является специальной встроенной командой воспринимающей свои аргументы как выражение сравнения или файловую проверку [.....]. Вызывает ошибку при попытке использования внутри || (логическое или) и & (логическое и);
[[ ]] - расширенная версия "[" (начиная с версии 2.02), внутри которой могут быть использованы || (логическое или), & (логическое и). Должна иметь закрывающую скобку "]]" (является зарезервированным словом, а не командой, его bash выполняет как один элемент с кодом возврата)
(( )) - математическое сравнение.

  • Сборка ПК для дома и офиса

  • Бесплатная диагностика

  • Гарантия

  • Самые низкие цены