bash检测Homebrew安装状态报conditional binary operator expected错误如何解决
问题报错原因分析
- 语法错误1:
[[是bash的条件关键字,和后续参数之间必须保留空格,你代码里写的[["$(brew -v)"没有空格,bash无法正确识别条件起始符,这就是触发conditional binary operator expected报错的核心原因。 - 语法错误2:
??不属于bash条件判断的合法运算符,你想实现的「判断brew版本输出包含git字符串」的逻辑,应该用==配合通配符*实现。 - 逻辑优化点:直接调用
brew -v判断是否安装的方式,在brew未安装时会额外抛出command not found的标准错误输出,更稳妥的判断命令是否存在的方式是使用command -v,不会产生多余输出。
正确写法示例
你可以根据需求选择如下两种写法:
# 写法1:修复你原来的字符串匹配逻辑 if [[ "$(brew -v 2>/dev/null)" == *git* ]]; then echo "Homebrew 已安装" else echo "Homebrew 未安装" fi
# 写法2:更稳妥的命令存在性判断,不需要抓取输出来匹配 if command -v brew &> /dev/null; then echo "Homebrew 已安装" else echo "Homebrew 未安装" fi
内容的提问来源于stack exchange,提问作者William Gosling
相关产品推荐
相关产品推荐

