Как проверить, существует ли файл или каталог в сценарии оболочки Bash

Проверка наличия файла или каталога из сценария Bash

Bash используется для автоматизации регулярно выполняемых команд в Linux. Команды, которые предназначены для операций с файлами / каталогами, используются довольно часто, и обычно, прежде чем мы выполним такую ​​команду, нам нужно проверить, существует ли конкретный файл или каталог. Давайте посмотрим, как выполнить эту проверку.

Синтаксис и использование

Файлы

Чтобы проверить, существует ли файлиспользуйте следующий синтаксис:

[-f]

Выражение [-f] возвращает 0, т.е. успех, если действительно существует, а если не существует, возвращает ненулевой статус. Обычно это используется как условие в если утверждение.

если [-f], то fi

Чтобы отрицать возвращаемое значение, просто предшествуйте -f с оператором отрицания (!).

если [ ! -f], затем fi

В этом случае условие будет выполняться, если файл не существует, поскольку возвращенный ненулевой статус (ложь) будет инвертирован и будет рассматриваться как 0 (истина).

Обратите внимание: если проверяемый файл не существует в текущем каталоге и существует в каком-то другом каталоге, следует указать полный путь к файлу, а не только имя файла.

Справочники

Аналогичный синтаксис, используемый для проверки файлов, используется для проверки каталогов.

[-d]

Подобно оператору для файлов, этот оператор возвращает 0, т. Е. Успех, если каталог существует, и ненулевое значение, т. е. возвращается статус отказа, если он не существует. Это также часто используется в если условие выписки.

если [-d], то fi

Чтобы отменить возвращенный статус, поставьте перед -d с оператором отрицания (!).

если [ ! -d], затем fi

В этом случае условие будет выполняться (статус 0), если каталог не существует, и завершится ошибкой (статус не равен нулю), если каталог существует.

Как упоминалось ранее для файлов, если проверяемый каталог существует в другом месте, а не в текущем каталоге, необходимо ввести весь путь к каталогу, а не только имя каталога.

💡 Синтаксис скобок ( [...] ), использованная здесь, на самом деле является командой Linux под названием контрольная работа. Варианты -f и -d особенности этой команды. Для получения дополнительной информации см. Справочную страницу test ( мужской тест ).

Проверка из сценария Bash

В приведенных выше примерах мы использовали синтаксис непосредственно в терминале. Оболочка всякий раз, когда она встречает цикл или условный оператор (если в нашем случае), он продолжает подсказку и позволяет пользователю ввести блок продолжения.

Тот же синтаксис можно использовать внутри сценария Bash.

В #! / bin / bash в начале указывает интерпретатор, который будет использоваться при выполнении файла. Хотя Bash является наиболее часто используемой оболочкой в ​​настоящее время, некоторые пользователи предпочитают такие оболочки, как zsh, который следует указать вместо bash в начале этого файла.

Чтобы дать разрешения на выполнение для этого файла запустите:

chmod + x test.sh

Ну наконец то, выполнить файл, бегать:

./test.sh
Категория: Linux