我在.bashrc中有以下内容来打印一个有趣的消息:
fortune | cowsay -W 65
如果计算机没有安装fortune
或cowsay
,我不希望此行运行。
执行此检查的最佳或最简单方法是什么?
答案 0 :(得分:1)
您可以使用type
或which
或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)
答案 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
答案 2 :(得分:0)
如果你的意图是在没有安装时出现错误信息,你可以这样做:
(fortune | cowsay -W 65) 2>/dev/null