Введение
Сценарий оболочки — это мощный инструмент для автоматизации задач в системах на основе Unix. Обычным требованием при написании сценариев оболочки является проверка существования конкретной программы или команды в системе. Эта статья познакомит вас с несколькими методами выполнения этой проверки, что позволит вам сделать ваш скрипт более надежным и надежным.
Краткое содержание:
- Использование команды -v
- Использование типа команды
- На основании какой команды
- Использование хеш-команды
- Рекомендации по передовой практике
Используйте команду -v
Команда `-v` представляет собой POSIX-совместимый метод проверки существования программы. Это встроенная команда оболочки, которая возвращает путь к команде, если она существует в системе. Вот пример того, как его использовать:
if command -v program_name > /dev/null 2>&1; then
echo "Program exists"
else
echo "Program does not exist"
fi
Замените «имя_программы» на программу, которую вы хотите проверить.
Используйте команду типа
Команда type — это еще одна встроенная команда оболочки, которую можно использовать для проверки существования программы. Она похожа на команду -v, но также предоставляет информацию о типе команды (псевдоним, функция или файл). Вот как это использовать:
if type program_name > /dev/null 2>&1; then
echo "Program exists"
else
echo "Program does not exist"
fi
Замените «имя_программы» на программу, которую вы хотите проверить.
Положитесь на команду which
Команда which — это внешняя утилита, которая ищет данную команду в каталогах, указанных в переменной среды PATH. Хотя он не совместим с POSIX, он обычно доступен в системах на базе Unix. Вот как это использовать:
if which program_name > /dev/null 2>&1; then
echo "Program exists"
else
echo "Program does not exist"
fi
Замените «имя_программы» на программу, которую вы хотите проверить.
Используйте хеш-команду
Команда hash — это встроенная команда оболочки, которая поддерживает хеш-таблицу недавно выполненных команд, ускоряя поиск команд. Вы можете использовать его для проверки существования программы следующим образом:
if hash program_name 2> /dev/null; then
echo "Program exists"
else
echo "Program does not exist"
fi
Замените «имя_программы» на программу, которую вы хотите проверить.
Рекомендации по передовой практике
- Всегда предпочитайте встроенные команды оболочки, такие как
command -v
, type или hash, а не внешние утилиты,which
для лучшей совместимости и производительности. - Перенаправление вывода на /dev/null (используя '> /dev/null 2>&1') необходимо для предотвращения появления ненужного вывода или вмешательства в скрипт.
- Если вам нужно управлять несколькими программами, используйте цикл и массив, чтобы сделать ваш сценарий более кратким и удобным в сопровождении.
Заключение
В этой статье мы обсудили четыре различных метода проверки существования программы в сценарии оболочки. Хотя command -v
является наиболее рекомендуемым и широко совместимым методом, тип, хэш и команды также могут использоваться в зависимости от ваших системных требований и среды. Включив эти проверки в свои сценарии оболочки, вы можете сделать ваши сценарии более надежными и адаптируемыми к различным средам.