Bash执行脚本返回[: =: unexpected operator错误如何解决?
shell脚本
[: =: unexpected operator报错原因及解决方案 报错原因
出现该错误核心是[ 条件判断的语法解析异常,常见触发原因有两个:
- 脚本执行用的是dash解释器:Ubuntu、Debian等发行版默认将
/bin/sh链接到dash,dash的语法校验比bash更严格,当$c变量为空或者未正确赋值时,[ $c = "+" ]会被解析为[ = "+" ],缺少左操作数触发语法错误。 - 变量未加双引号包裹:未包裹双引号的变量在shell解析阶段如果为空、包含空格或特殊字符,会被拆分为多个参数,导致
[命令接收到的参数数量不符合预期。
修复方案
- 给条件判断中的变量全部加上双引号,避免空值或特殊字符导致的解析异常,将判断行修改为:
if [ "$c" = "+" ]; then
- 明确指定bash作为脚本解释器,二选一操作即可:
- 在脚本第一行添加shebang声明
#!/bin/bash,给脚本加执行权限后用./simple.sh执行 - 执行脚本时直接指定解释器:
bash simple.sh
- 在脚本第一行添加shebang声明
修正后完整参考代码
#!/bin/bash # 示例:从执行参数读取a b c三个值 a=$1 b=$2 c=$3 echo "$a $b $c = " if [ "$c" = "+" ]; then echo $(($a + $b)) fi
内容的提问来源于stack exchange,提问作者Lê Quốc Khánh
相关产品推荐
相关产品推荐

