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

sen*_*rio 4 bash

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

`tmux --help` | grep "tmux: command not found" &> /dev/null
if [ $? == 1 ]; then
    echo "tmux is not installed"
    exit
fi
Run Code Online (Sandbox Code Playgroud)

安装完tmux后,我得到:

usage: tmux [-2lquvV] [-c shell-command] [-f file] [-L socket-name]
            [-S socket-path] [command [flags]]
tmux is not installed
Run Code Online (Sandbox Code Playgroud)

如果没有安装程序,请使用字符串"tmux:command not found".这可以解释为什么我grep输出tmux --help命令.是否是检查tmux是否安装的正确方法?

脚本alwais回声"未安装tmux".即使我安装了tmux.它出什么问题了?

Eta*_*ner 6

您可以使用command,type并且hash内置函数测试给定的命令是否是在当前shell会话使用.

这不会告诉您它是否在当前不在当前的某个位置可用PATH.

你应该避免which为此目的而使用(即使这是许多人会得到的默认建议),因为它不是一个标准化的工具(不是完全的),而且它是一个外部工具,与上面所有相比都是建立的 -进入壳(因此检查更昂贵).