При написании Bash-скриптов часто возникает необходимость проверить, существует ли файл (или директория), прежде чем продолжить выполнение. Давайте разберём несколько подходов с примерами.
1. Проверка существования файла. Самый простой способ проверить, существует ли файл:
if [ -e "/path/to/file" ]; then
echo "Файл существует."
else
echo "Файл не найден."
fi
2. Проверка, что это обычный файл. Если нужно убедиться, что это именно файл (а не директория или символическая ссылка):
if [ -f "/path/to/file" ]; then
echo "Это файл."
else
echo "Это не файл или его не существует."
fi
3. Проверка существования директории. Чтобы проверить, существует ли директория:
if [ -d "/path/to/directory" ]; then
echo "Директория существует."
else
echo "Директория не найдена."
fi
4. Проверка прав доступа к файлу. Проверить доступ на чтение:
if [ -r "/path/to/file" ]; then
echo "Файл доступен для чтения."
fi
Проверить доступ на запись:
bash
Копировать код
if [ -w "/path/to/file" ]; then
echo "Файл доступен для записи."
fi
Проверить доступ на выполнение:
bash
Копировать код
if [ -x "/path/to/file" ]; then
echo "Файл доступен для выполнения."
fi
5. Проверка нескольких условий. Можно комбинировать проверки:
if [ -f "/path/to/file" ] && [ -w "/path/to/file" ]; then
echo "Файл существует и доступен для записи."
else
echo "Файл не существует или недоступен для записи."
fi
Пример: Реальный сценарий. Предположим, вы пишете скрипт для архивации файла, только если он существует.
#!/bin/bash
FILE="/path/to/file"
ARCHIVE="/path/to/archive"
if [ -f "$FILE" ]; then
tar -czf "$ARCHIVE/archive.tar.gz" "$FILE"
echo "Файл заархивирован."
else
echo "Файл не найден. Архивация не выполнена."
fi
Полезный совет: Для проверки в одном условии часто используют флаг || (или):
[ -f "/path/to/file" ] || echo "Файл не найден."
Проверка существования файла или директории - это базовая, но важная часть автоматизации с помощью Bash. Правильное использование этих проверок позволит вашим скриптам работать надёжно и избегать ошибок.
BashTex 📱 #bash