Ответ
В Bash для записи условия в одну строку используется компактный синтаксис с точкой с запятой (;).
Базовый синтаксис:
if [ условие ]; then команда; fi
Практические примеры из моих скриптов:
-
Проверка существования файла или директории:
if [ -f "/etc/config.yaml" ]; then echo "Конфиг найден"; fi if [ ! -d "/backup" ]; then mkdir -p /backup; fi -
Сравнение строк и чисел:
if [ "$ENV" = "production" ]; then echo "Запуск в prod"; fi if [ $COUNT -gt 10 ]; then echo "Превышен лимит"; fi -
Использование
&&и||как альтернативыif-then-else: Это более идиоматичный способ для простых проверок.# Если условие истинно, выполнить команду [ -f "/var/run/process.pid" ] && echo "Процесс уже запущен" # Если условие ложно, выполнить команду [ -z "$HOST" ] || echo "Хост установлен в $HOST" # Аналог if-else [ "$STATUS" = "OK" ] && echo "Успех" || echo "Ошибка"Важно: Конструкция
&&и||работает на основе кода возврата предыдущей команды (0 — успех, не 0 — ошибка). -
Группировка нескольких команд с помощью
{ }:# Если файл существует, вывести его содержимое и размер [ -f "app.log" ] && { echo "--- Лог ---"; cat app.log; echo "Размер: $(wc -l < app.log) строк"; }
Рекомендация: Для сложной логики или многострочных действий лучше использовать стандартный многострочный if, так как это улучшает читаемость и поддерживаемость скрипта.