TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #471 1.1K
Проверка существования команды и версии утилиты

Скрипты часто падают не из-за логики, а из-за отсутствующей команды или неподходящей версии утилиты. Хорошая практика для часто переезжающих скриптов - проверять наличие команды до выполнения основной логики и иметь fallback.

▪️ Базовая проверка: есть ли команда


if ! command -v curl >/dev/null 2>&1; then
echo "curl не найден"
exit 1
fi


command -v в данном случае:

быстрее и безопаснее which;
корректно работает с alias и builtins;
не пишет лишнего в stdout.

▪️ Проверка с fallback


if command -v curl >/dev/null; then
DL="curl -fsSL"
elif command -v wget >/dev/null; then
DL="wget -qO-"
else
echo "Нет curl или wget"
exit 1
fi

$DL https://bashtex.com


Один интерфейс - разные реализации.

▪️ Проверка версии утилиты


REQ="7.60"

CUR=$(curl -V | awk '{print $2}')

if [ "$(printf '%s\n' "$REQ" "$CUR" | sort -V | head -n1)" != "$REQ" ]; then
echo "curl слишком старый: $CUR"
exit 1
fi


sort -V корректно сравнивает версии (7.9 < 7.10).

▪️ Универсальная функция


require_cmd() {
command -v "$1" >/dev/null || {
echo "Требуется команда: $1"
exit 1
}
}


Использование:


require_cmd awk
require_cmd tar


BashTex 📱 #bash #utils
  • 👍 9
More from @bash_tex
  1. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  2. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  3. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  4. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  5. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  6. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →