Как выбрать команду среди кратных с приоритетом - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь создать базовую утилиту, для которой мне нужно supervisord, установленную на машине.Но проблема в том, что это зависит от пользователя, от того, как он / она его устанавливает, поэтому здесь я пытаюсь охватить почти все сценарии для получения команды супервизора.

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

if [[ -f "/opt/anaconda/bin/supervisord" ]]; then
  RUNNER="/opt/anaconda/bin/supervisord"
elif [[ -f "/usr/local/bin/supervisord" ]]; then
  RUNNER="/usr/local/bin/supervisord"
elif [[ -f "/usr/bin/supervisord" ]]; then
  RUNNER="/usr/bin/supervisord"
elif [[ "$(command -v supervisord)" ]]; then
  RUNNER="supervisord"
else
  echo "supervisord is not install on this machine"
  exit 1
fi

Я ищу какой-нибудь лучший подход для достижения этой цели.

1 Ответ

0 голосов
/ 15 декабря 2018

Опубликованный код проверяет некоторые абсолютные пути, и когда он находит существующий, он использует его.Это не очень хорошая идея.Можно ожидать, что пользователи установят свои PATH таким образом, что будет использоваться правильная версия supervisord, где бы она ни находилась.Другими словами, команда, доступная на PATH, должна быть первым выбором.

if type supervisord &>/dev/null; then
  RUNNER=supervisord
elif ...
  ...
fi
...