Проверка наличия файла или каталога из сценария 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