我正在尝试编写一个使用'get-iplayer'的脚本,并将用于不同的发行版。在debian上它位于'/ usr / bin / get-iplayer'中,但是在centos上,例如,它位于'/ usr / bin / get_iplayer'中。
我已经能够检查它是否安装了 -
if [[ -f "/usr/bin/get-iplayer" ]] || [[ -f "/usr/bin/get_iplayer" ]]
then
echo ;
else
echo "$(tput setaf 1) $(tput setab 7) Error: 'get-iplayer' or 'get_iplayer' is not installed. Please install it. $(tput sgr 0)"
fi
如果可以通过两个不同的名称知道,我怎么称呼它呢?
答案 0 :(得分:5)
if [[ -x "/usr/bin/get-iplayer" ]]
then player="/usr/bin/get-iplayer"
elif [[ -x "/usr/bin/get_iplayer" ]]
then player="/usr/bin/get_iplayer"
else echo "$0: error: neither get-iplayer nor get_iplayer is installed in /usr/bin" >&2
exit 1
fi
# Run it
"$player" ...
答案 1 :(得分:1)
测试两个路径/名称,然后在脚本中设置一个别名,指向找到的别名。将该别名用于脚本的其余部分。
答案 2 :(得分:1)
非常类似于Jonathan Leffler的回答,但是使用shell函数而不是参数扩展:
get_iplayer () {
if [[ -x "/usr/bin/get-iplayer" ]]
then /usr/bin/get-iplayer "$@"
elif [[ -x "/usr/bin/get_iplayer" ]]
then /usr/bin/get_iplayer "$@"
else echo "$0: error: neither get-iplayer nor get_iplayer is installed in /usr/bin" >&2
exit 1
fi
}
答案 3 :(得分:0)
Debian实际上同时拥有get-iplayer
和get_iplayer
。 get_iplayer
是脚本的真实名称。 Debian添加了符号链接get-iplayer
,因为带连字符的名称符合其包命名约定(因此包的名称)。您应该可以在任何系统上使用get_iplayer
,因为这是上游规范名称,改变它是不好的做法。