bash,…使用bash脚本检查是否安装了程序

Bash, … check if a program is installed or not, using bash script

本问题已经有最佳答案,请猛点这里访问。

我正在尝试创建一个小脚本,检查是否安装了程序。我正在尝试使用tmux,…

1
2
3
4
5
`tmux --help` | grep"tmux: command not found" &> /dev/null
if [ $? == 1 ]; then
    echo"tmux is not installed"
    exit
fi

安装TMUX后,我得到:

1
2
3
usage: tmux [-2lquvV] [-c shell-command] [-f file] [-L socket-name]
            [-S socket-path] [command [flags]]
tmux is not installed

如果未安装程序,则应用字符串"tmux:command not found"。这可以解释为什么我对tmux --help命令的输出进行grep。是检查是否安装了TMUX的正确方法吗?

脚本alwais回应"没有安装tmux"。即使我安装了tmux。怎么了?


您可以使用commandtypehash内置函数来测试给定命令在当前shell会话中是否可用。

但是,如果它不在当前的PATH中的某个位置可用,则不会告诉您。

为此,您应该避免使用which(尽管这是许多人会给出的默认建议),因为它不是标准化工具(不是完全的),而且与上述工具相比,它是一个外部工具,这些工具都内置于shell中(因此检查成本更高)。