Centos下运行shell一直提示 未预期的符号 `fi' 附近有语法错误

#!/bin/bash
a=10
b=10
if [ $a == $b ]
then
   echo "a 等于 b"
fi

一直提示

do.sh:行7: 未预期的符号 `fi' 附近有语法错误
do.sh:行7: `fi'

图片描述

但是代码没有问题,是什么原因?
服务器版本是CentOS Linux release 7.2.1511 (Core)

阅读 22.5k
5 个回答
if [ $a == $b ];then
   echo "a 等于 b"
fi

then必须放if同一行

格式是这样的:

    if [ command ];then
         符合该条件执行的语句
    elif [ command ];then
         符合该条件执行的语句
    else
         符合该条件执行的语句
    fi

目前楼主的代码里含有不可见的特殊字符,用linux编辑器来写一遍,保证没问题。

多半因为/n/r导致的,将你的xx.sh替换下,语法:
sed -i 's/\r$//' xxxxxxx.sh

我刚刚也遇到这个问题了,解决方法出乎意料:

这其实是 zsh 的兼容性问题,你肯定装了 oh-my-zsh,然后用 sh xxx.sh 运行脚本,用 bash 来执行就没这个问题了:

bash xxx.sh
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏