如何在多个优先级之间选择命令

时间:2018-12-15 09:08:51

标签: linux bash shell supervisord

我正在尝试创建一个基本实用程序,为此我需要在计算机上安装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 :(得分:1)

发布的代码会检查一些绝对路径, 当它发现存在的时候, 它将使用它。 这不是一个好主意。 您可以期望用户以任何方式使用PATH的正确版本来设置他们的supervisord。 换句话说,PATH上可用的命令必须是首选。

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