Bash脚本if-elif语句报‘conditional binary operator expected’错误求助
Bash脚本elif语句触发"conditional binary operator expected"错误的解决方法
你这段代码的问题出在elif的条件判断里混用了不同的条件语法,具体错误点如下:
- 在
[[ ... ]]扩展条件结构中,不需要嵌套[ ],且-a/-o是[(test命令)的逻辑运算符,[[里应该用&&/|| - 用
{}分组条件是错误的,[[中分组需要用(),且括号前后必须有空格
修正后的代码(推荐用[[写法)
if [ $len -eq 1 ]; then grep -i -H "$1" *.org elif [[ $len -eq 2 && ($1 == "keyword" || $1 == "todo") ]]; then # 写入你的后续逻辑 fi
另一种POSIX兼容写法(用[命令)
如果你需要兼容更多POSIX Shell,也可以这样写:
if [ $len -eq 1 ]; then grep -i -H "$1" *.org elif [ $len -eq 2 ] && ([ "$1" = "keyword" ] || [ "$1" = "todo" ]); then # 写入你的后续逻辑 fi
额外注意事项
- 给变量
$1加上双引号"$1",避免当参数为空或包含空格时出现语法错误 [[是Bash专属语法,支持更直观的字符串比较和逻辑运算,而[是POSIX标准命令,兼容性更强
内容的提问来源于stack exchange,提问作者swgeek
相关产品推荐
相关产品推荐

