如何以编程方式检测Linux或OS X中的可用实用程序

时间:2012-11-16 20:48:37

标签: linux macos bash shell cygwin

  

可能重复:
  Find out if a command exists on POSIX system
  How to find a usable executable file in bash

在命令行上,我会键入(例如)type vimdiff(如果机器上没有which vimdiff,则键入type。但是在脚本中,检查实用程序然后根据其可用性采取某些操作的最可靠方法是什么。

目前的目的,如果它有助于了解,我正在编写一个函数,thediff,我可以在各种操作系统和各种风格的操作系统的本地和远程机器上安装,并让它如果它可用(对于OS X和Windows / Cygwin环境),则将参数传递给p4merge,如果没有,则尝试vimdiff并使用它(如果没有),如果没有则默认为diff我的首选选项(例如--side-by-side --suppress-common-lines --ignore-space-change')。

由于which以其提供的反馈形式出人意料地不可靠,我不确定如果未安装相关实用程序,我是否可以指望$?1。但另一方面,我不确定我是否可以完全依赖type安装。

看起来像kludgey,但只是尝试第一个实用程序,如果$?非零,那么尝试下一个,等等。

这一般如何处理?

更新

虽然我用'bash'标记了这一点,但这只是为了引起人们关注bash标记,因为他们可能知道答案。我做意味着暗示我只使用bash,或者我可以假设bash将出现在我使用的所有系统上。事实上,我不得不在系统中工作,脾气暴躁的系统管理员使得除了Korn shell之外的任何东西都很难使用。并且(只要可用)我使用zsh而不是bash。因此,How to find a usable executable file in bash的精确副本,因为这需要bash。所以问题是不同的。此外,我明确声明我必须使用type不可用的系统。所有的闭门器显然都忽略了这个事实。

这个问题可能合法地与另一个问题重复,如果我提到的所有系统实际上都符合POSIX标准。我不知道他们是不是。

0 个答案:

没有答案