如何在if条件中检查系统上是否存在两个特定程序?

时间:2013-01-24 06:21:20

标签: bash

我在.bashrc中有以下内容来打印一个有趣的消息:

fortune | cowsay -W 65

如果计算机没有安装fortunecowsay,我不希望此行运行。

执行此检查的最佳或最简单方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用typewhichhash来测试命令是否存在。

从所有这些中,which仅适用于可执行文件,我们将跳过它。

尝试

if type fortune &> /dev/null; then
    if type cowsay &> /dev/null; then
        fortune | cowsay -W 65
    fi
fi

或者,没有if s:

type fortune &> /dev/null && type cowsay &> /dev/null && (fortune | cowsay -W 65)

答案 1 :(得分:1)

type就是这个的工具。它是Bash内置的。它并没有像我曾经想过的那样过时,那就是typeset。您可以使用一个命令检查两者

if type fortune cowsay
then
  fortune | cowsay -W 65
fi

它还会在STDOUT和STDERR之间拆分输出,因此您可以禁止成功消息

type fortune cowsay >/dev/null
# or failure messages
type fortune cowsay 2>/dev/null
# or both
type fortune cowsay &>/dev/null

Check if a program exists from a Bash script

答案 2 :(得分:0)

如果你的意图是在没有安装时出现错误信息,你可以这样做:

(fortune | cowsay -W 65) 2>/dev/null