首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用一个可能有两个不同名称的程序

调用一个可能有两个不同名称的程序
EN

Stack Overflow用户
提问于 2014-01-28 14:34:15
回答 4查看 51关注 0票数 0

我正在尝试编写一个脚本,它使用“get”,并将用于不同的发行版。在debian上,它在'/usr/bin/get-iplayer‘中,但是在centos上,它在'/usr/bin/get_iplayer’中。

我已经检查过它是否被安装在-

代码语言:javascript
复制
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

那么,如果它可以有两个不同的名字,我怎么称呼它呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-28 14:37:34

代码语言:javascript
复制
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" ...
票数 5
EN

Stack Overflow用户

发布于 2014-01-28 14:37:11

测试两个路径/名称,然后在脚本中设置一个别名,指向找到的别名。对脚本的其余部分使用该别名。

票数 1
EN

Stack Overflow用户

发布于 2014-01-28 16:11:24

与Jonathan的回答非常相似,但使用shell函数而不是参数展开:

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21408455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档