我的 .bashrc 中有以下内容来打印一条看起来很有趣的消息:
fortune | cowsay -W 65
如果计算机没有fortune
或没有cowsay
安装,我不希望这条线运行。
执行此检查的最佳或最简单方法是什么?
我的 .bashrc 中有以下内容来打印一条看起来很有趣的消息:
fortune | cowsay -W 65
如果计算机没有fortune
或没有cowsay
安装,我不希望这条线运行。
执行此检查的最佳或最简单方法是什么?
您可以使用type
orwhich
或hash
来测试命令是否存在。
从所有这些中,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)
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
如果您的意图是在未安装的情况下不显示错误消息,则可以这样:
(fortune | cowsay -W 65) 2>/dev/null