Команда test в Linux

Linux 命令大全Энциклопедия команд Linux


testЭто встроенная команда в системе Linux/Unix, используемая для вычисления условий, главным образом для различных проверок и операций сравнения в shell-скриптах. Она может проверять атрибуты файлов, сравнивать строки и числовые значения и является незаменимым инструментом для написания shell-скриптов.


Базовый синтаксис

test EXPRESSION
# 或者使用方括号格式(更常用)
[ EXPRESSION ]

Примечание: При использовании формата со скобками между выражением и скобками должны быть пробелы, т. е.,[空格EXPRESSION空格]


Основные категории функций

1. Проверка файлов

Проверяет различные атрибуты файлов или каталогов:

Выражение Значение
-e 文件 Существует ли файл
-f 文件 Является ли обычным файлом (не каталогом или файлом устройства)
-d 文件 Является ли каталогом
-s 文件 Размер файла не пуст
-r 文件 Файл доступен для чтения
-w 文件 Файл доступен для записи
-x 文件 Файл доступен для выполнения
-L 文件 Файл является символической ссылкой

Пример:

Примеры

if [ -f "/etc/passwd" ]; then
    echo "Это обычный файл"
fi

2. Сравнение строк

Сравнивает отношение между двумя строками:

Выражение Значение
-z "字符串" Длина строки равна 0
-n "字符串" Длина строки не равна 0
"串1" = "串2" Строки равны
"串1" != "串2" Строки не равны

Пример:

Примеры

read -p "Введите имя пользователя: " username
if [ -z "$username" ]; then
    echo "Имя пользователя не может быть пустым"
fi

3. Числовое сравнение

Сравнивает соотношение между двумя целыми числами:

Выражение Значение
n1 -eq n2 Equal
n1 -ne n2 Не равно
n1 -gt n2 Больше
n1 -ge n2 Больше или равно
n1 -lt n2 Меньше
n1 -le n2 Меньше или равно

Пример:

Примеры

if [ $(id -u) -eq 0 ]; затем
    echo "Сейчас пользователь root"
fi

4. Логические операторы

Объединяет несколько условий проверки:

Operator Значение Пример
! Логическое НЕ [ ! -f file ]
-a Логическое И [ -f file -a -r file ]
-o Логическое ИЛИ [ -d dir -o -f file ]

Современный рекомендуемый синтаксис(с использованием&&и||):

Примеры

[ -f file ] && [ -r file ]  # Файл существует и доступен для чтения
[ -d dir ] || [ -f file ]   # Это каталог или файл

Продвинутое использование

1. Вычисление составного условия

Примеры

if [ -f "/etc/passwd" -a -r "/etc/passwd" ]; затем
    echo "Файл существует и доступен для чтения"
fi

2. Комбинирование с инструкциями if

Примеры

if [ "$1" = "start" ]; then
    echo "Запуск службы..."
elif [ "$1" = "stop" ]; then
    echo "Остановка службы..."
else
    echo "Недопустимый параметр"
fi

3. Использование при присваивании переменной

Примеры

[ -z "$PATH" ] && PATH="/usr/bin:/bin"  # Установить значение по умолчанию, если PATH пуста

Типичные ошибки и предостережения

Проблемы с пробелами:

Примеры

[ "$var" = "value" ]  # Правильно
[ "$var"="value" ]    # Неправильно, пропущен пробел

Заключение строковых переменных в кавычки:

Примеры

[ -n "$var" ]  # Правильно, предотвращает ошибки, когда переменная пуста
[ -n $var ]    # Ошибки, когда $var пуста

Сравнение чисел и сравнение строк:

Примеры

[ "10" -gt "2" ]  # Правильно, числовое сравнение
[ "10" > "2" ]    # Неправильно, это строковое сравнение (лексикографическое)

Путь проверки файла:

Примеры

[ -f "$file" ]    # Правильно, переменная заключена в кавычки
[ -f $file ]      # Ошибка возникает, когда путь содержит пробелы

Примеры практического применения

Пример 1: Проверка существования каталога резервных копий

Примеры

backup_dir="/var/backups"
if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
    echo "Создание каталога резервных копий:$backup_dir"
fi

Пример 2: Проверка пользовательского ввода

Примеры

read -p "Введите возраст: " age
if [ "$age" -lt 0 -o "$age" -gt 120 ]; then
    echo "Некорректный ввод возраста"
    exit 1
fi

Пример 3: Сценарий запуска службы

Примеры

#!/bin/bash

if [ "$1" = "start" ]; then
    if [ -f "/var/run/service.pid" ]; then
        echo "Служба уже запущена"
    else
        echo "Запуск службы..."
        # Команда запуска
    fi
elif [ "$1" = "stop" ]; then
    # Логика остановки
else
    echo "Использование: $0 {start|stop}"
fi

Итог

testКоманда — это фундаментальный инструмент в программировании сценариев оболочки. Освоение её позволяет вам:

  • Реализовывать логику условного ветвления
  • Проверять состояние файлов и каталогов
  • Сравнивать строки и числовые значения
  • Создавать сложные условия вычисления

Запомните ключевые моменты:

  1. Формат с квадратными скобками используется чаще, но обратите внимание на пробелы
  2. Заключайте ссылки на переменные в двойные кавычки
  3. Различайте операторы сравнения строк и числового сравнения
  4. Используйте современный&&и||чтобы заменить-aи-o

Linux 命令大全Энциклопедия команд Linux

Другие расширения