我正在尝试创建一个小脚本来检查程序是否已安装。我正在尝试使用tmux,...
`tmux --help` | grep "tmux: command not found" &> /dev/null
if [ $? == 1 ]; then
echo "tmux is not installed"
exit
fi
安装完tmux后,我得到:
usage: tmux [-2lquvV] [-c shell-command] [-f file] [-L socket-name]
[-S socket-path] [command [flags]]
tmux is not installed
如果没有安装某个程序,请修改字符串" tmux:command not found"。这可以解释为什么我grep tmux --help
命令的输出。检查tmux是否安装的正确方法是什么?
脚本alwais回声"未安装tmux"。即使我安装了tmux。它有什么问题?
答案 0 :(得分:6)
您可以使用command
,type
和hash
内置函数来测试给定命令在当前shell会话中是否可用。
但是,这不会告诉您它是否在当前PATH
以外的某个位置可用。
你应该避免使用which
来达到这个目的(即使这是你会从很多人那里得到的默认建议),因为它不是一个标准化的工具(不完全)而且它是一个外部的工具与上面相比都是内置于shell中的(因此检查成本更高)。