1

我的 .bashrc 中有以下内容来打印一条看起来很有趣的消息:

fortune | cowsay -W 65

如果计算机没有fortune或没有cowsay安装,我不希望这条线运行。

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

4

3 回答 3

1

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

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

尝试一下

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

或者,没有ifs:

type fortune &> /dev/null && type cowsay &> /dev/null && (fortune | cowsay -W 65)
于 2013-01-24T06:29:38.987 回答
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

从 Bash 脚本检查程序是否存在

于 2013-01-24T07:05:57.667 回答
0

如果您的意图是在未安装的情况下不显示错误消息,则可以这样:

(fortune | cowsay -W 65) 2>/dev/null
于 2013-01-24T06:27:20.923 回答