Вы вошли как Гость | Группа "Гости" Приветствую Вас Гость | RSS
mdErrDX5341.lab:...I'm a fool studying schizophrenia as a source of life...=)

Не забудь поспать: Четверг, 24.07.2025, 03:49
Главная » Статьи » Unix/Linux » Shell

Bash # Условия
На практике в большинстве сценариев используется команда [ или test - логическая проверка командной оболочки. В некоторых системах команда [ и test - синонимы, за исключением того, что при использовании команды [ для удобочитаемости применяется и завершающая часть ]. Наличие команды [ может показаться странным, но в программном коде она упрощает синтаксис и делает его более похожим на другие языки программирования.

представим команду test на примере одного простейшего условия: проверки наличия файла. Для нее понадобиться следующая команда: test -f <имя_файла>, поэтому в сценарии можно написать

if test -f fred.c
then
...
fi

То же самое можно записать следующим образом:

if  [ -f fred.c ]
then
...
fi

Код завершения команды test(выполнено ли условие) определяет, будет ли выполняться условный программный код.


***************
Имейте в виду, что вы должны вставлять пробелы между квадратной скобкой [ и проверяемым условием. Это легко усвоить, если запомнить, что вставить символ [ - это все равно, что написать test, а после имени команды вы всегда должны вставлять пробел.

Если вы предпочитаете помещать слово then в той же строке, что и if, нужно добавить точку с запятой для отделения команды test от then:

if [-f fred.c]; then
...
fi

Варианты условий, которые вы можете применять в команде test, делятся на три типа: строковые сравнения, числовые сравнения и проверка файловых флагов(filt conditionals.



 Варианты условий
Результат
 Сравнения строк
 
 Строка1 = Строка2
true, если строки одинаковые
 Строка1 != Строка2
 true, если строки разные
 -n Строка
 true, если Строка не null
 -z строка
 true, если Строка null(пустая)
 Сравнения чисел
 
 Выражение1 - eq Выражение2
 true,если выражения равны
 В1 -ne В2
 true, если выражения не равны
 В1 -gt В2
 true, если В1 больше, чем В2
 В1 -ge В2
 true, если В1 не меньше В2
 В1 -lt В2true, если В1  меньше, чем В2
 В1 -le В2 true, если В1  не больше В2
 ! В
 true, если В ложно, и наоборот
 Файловые флаг
 
 -d file
 true, если файл - каталог
 -e f
 true, если файл существует. Исторически, опция -e не была переносима на другие платформы, поэтому обычно применяется -f
 -f file
 true, если файл - обычный файл
 -g file
 true, если для файла установлен бит set-group-id
 -r f
 true, если файл доступен для чтения
 -s f
 true, если файл ненулевого размера
 -u f
 true, если для файла установлен бит set-user-id
 -w f
 true, если файл доступен для записи
 -x f
 true, если файл - исполняемый файл


Категория: Shell | Добавил: mdErrDX5341 (11.11.2011)
Просмотров: 2610 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]