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

Когда вы вызываете команду из сценария оболочки в Linux, рекомендуется проверить, существует ли она в системе, на которой выполняется сценарий. Это поможет вам избежать ошибок и предотвратить завершение сценария. Таким образом, если команда не существует, вы сможете продолжить выполнение сценария без прерывания. В этой статье мы узнаем, как проверить, существует ли программа в сценарии оболочки.

Как проверить, существует ли программа в Bash

Вы можете легко проверить, существует ли команда или нет, используя ключевое слово command. Вот его синтаксис.

Приведенная выше команда возвращает true, если команда, указанная после опции -v, существует, в противном случае она вернет false.

Например, если вы хотите проверить, существует команда или нет, и вывести сообщение об ошибке, если команда не существует.

Кроме того, вы можете использовать команды hash и type, чтобы проверить, существуют ли команды и инструменты Linux или нет.

Для обычных команд.

Или... Для проверки встроенных модулей и ключевых слов.

Как правило, многие разработчики и администраторы используют команду which для проверки существования или отсутствия команды.

Лучше использовать команды command, hash и type вместо команды which, потому что which - это внешняя команда, а остальные три команды - внутренние. Результат внутренних команд одинаков в большинстве систем, в то время как результат внешних команд варьируется от системы к системе.

Во многих операционных системах команда which даже не возвращает статус выхода, поэтому если вы используете ее в условии if, она всегда будет иметь значение true.

Вместо этого вы можете использовать команды command, hash и type, чтобы сделать то же самое. Вот примеры команд для проверки существования команды foo в вашей системе.

Вот несколько моментов, о которых следует помнить при использовании хэша, типа и команды.

POSIX четко определяет вывод команды. Поэтому вы можете смело использовать его почти во всех скриптах. Но если ваш hash bang (среда выполнения) - /bin/sh, вам следует быть осторожным с использованием hash и type, поскольку их статус выхода не очень хорошо определен POSIX.

Если ваш сценарий использует bash, то hash и type не имеют значения и оба совершенно безопасны для использования. На самом деле, type предоставляет опцию -P для прямого поиска путей к папкам, указанным в переменной PATH вашей системы, а hash автоматически хэширует путь команды для более быстрого поиска в следующий раз.

Вот простой пример запуска функции gdate, если она существует, в противном случае запускается функция date.

Кроме того, вы можете использовать сторонние скрипты, такие как scripts-common, чтобы проверить, существует ли скрипт или нет. Вот его синтаксис.

Заключение

В этой статье мы узнали, как проверить, существует ли программа или нет, и как добавить ее в условие if..else, чтобы продолжить выполнение скрипта в случае, если команда не существует.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий