| Тест | Что проверяет | Как обычно используют |
|---|---|---|
-f |
Существует обычный файл | [[ -f $file ]] && . "$file" - загрузить конфиг, если он есть |
-d |
Путь - каталог | [[ ! -d $out ]] && mkdir -p "$out" - создать каталог при необходимости |
-n |
Непустая строка | [[ -n $var ]] && echo "значение есть" |
-z |
Пустая строка (противоположность -n) |
[[ -z $var ]] && return 1 - выйти, если переменная не задана |
-x |
Файл исполняемый текущим пользователем | `[[ -x $(command -v git) ]] |
-nt |
Первый файл новее второго | [[ main.c -nt main ]] && gcc -o main main.c - компилировать только при изменении |
Как их вписывают в скрипты
-fчасто служит "защищённому"source: если конфиг‑файл есть, он подключается, иначе скрипт просто идёт дальше.-dпомогает управлять временными каталогами: создаём их, если их нет, и удаляем, когда они больше не нужны.-n / -zпозволяют быстро проверять, переданы ли обязательные параметры или переменные окружения.-xпроверка наличия внешних утилит (git, curl и т.п.) - обычный способ дать пользователю понятную ошибку до начала работы.-ntзаменяет простейший "make‑like" механизм: пересобираем артефакт только когда его исходники новее.
Эти шесть операторов покрывают почти все типичные условия в реальных Bash‑скриптах, делая их короче, надёжнее и легче читаемыми.
