Основы команды test
Команда test в Linux является важным инструментом для оценки условий в сценариях оболочки. Она позволяет проверять свойства файлов, сравнивать строки, оценивать числовые значения и многое другое. Когда проверяемое условие истинно, команда test возвращает нулевой статус выхода; в противном случае возвращается ненулевой статус выхода.
Начнем с основ. Сначала перейдите в каталог проекта:
cd ~/project
Команда test может быть записана двумя способами:
- Использовать слово
test, за которым следует условие.
- Использовать квадратные скобки
[ ] вокруг условия.
Попробуем оба метода, чтобы проверить, существует ли каталог:
## Метод 1: Использование слова 'test'
test -d ~/project && echo "The project directory exists."
## Метод 2: Использование квадратных скобок
[ -d ~/project ] && echo "The project directory exists."
Вы должны увидеть следующий вывод для обеих команд:
The project directory exists.
Опция -d проверяет, существует ли каталог. Оператор && используется для выполнения команды echo только в том случае, если условие проверки истинно.
Некоторые распространенные опции проверки файлов включают:
-d файл: Истинно, если файл существует и является каталогом.
-e файл: Истинно, если файл существует.
-f файл: Истинно, если файл существует и является обычным файлом.
-r файл: Истинно, если файл существует и доступен для чтения.
-w файл: Истинно, если файл существует и доступен для записи.
-x файл: Истинно, если файл существует и является исполняемым.
-s файл: Истинно, если файл существует и его размер больше нуля.
Создадим тестовый файл и проверим его свойства:
## Создать тестовый файл
echo "Hello, Linux condition testing!" > test_file.txt
## Проверить, существует ли файл
test -e test_file.txt && echo "The file exists."
## Проверить, доступен ли файл для чтения
[ -r test_file.txt ] && echo "The file is readable."
## Проверить, пуст ли файл
[ -s test_file.txt ] && echo "The file is not empty."
Эти команды должны выдать следующий вывод:
The file exists.
The file is readable.
The file is not empty.
Теперь создадим простой сценарий оболочки, который использует команду test для проверки существования файла и, если он не существует, создания его:
## Создать файл сценария
cat > check_file.sh << 'EOF'
#!/bin/bash
FILENAME="status.txt"
if [ ! -e "$FILENAME" ]; then
echo "File $FILENAME does not exist. Creating it now."
echo "This is a status file." > "$FILENAME"
else
echo "File $FILENAME already exists."
fi
## Отобразить содержимое файла
echo "Content of $FILENAME:"
cat "$FILENAME"
EOF
## Сделать сценарий исполняемым
chmod +x check_file.sh
## Запустить сценарий
./check_file.sh
При запуске сценария вы должны увидеть вывод, похожий на следующий:
File status.txt does not exist. Creating it now.
Content of status.txt:
This is a status file.
Если вы запустите сценарий еще раз, вы увидите:
File status.txt already exists.
Content of status.txt:
This is a status file.
Это демонстрирует, как использовать команду test для проверки существования файла и выполнения различных действий на основе результата.