linux下shell编程问题

程序报错:第8行then附近有语法错误

#!/bin/bash

usagefunc () {
  echo 用法: $0 Directory  Day;
  echo 例如: $0 `pwd`   `date +%d`;
}

if [ $# -ne 2 ] ; then
  usagefunc;
  exit;
fi
#判断输入日期的第一个数字是否为零,若为零则去掉
if [ $2 = "01" ] ; then M=1;   MONOK=1;
elif [ $2 = "02" ] ; then M=2; MONOK=1;
elif [ $2 = "03" ] ; then M=3; MONOK=1;
elif [ $2 = "04" ] ; then M=4; MONOK=1;
elif [ $2 = "05" ] ; then M=5; MONOK=1;
elif [ $2 = "06" ] ; then M=6; MONOK=1;
elif [ $2 = "07" ] ; then M=7; MONOK=1;
elif [ $2 = "08" ] ; then M=8; MONOK=1;
elif [ $2 = "09" ] ; then M=9; MONOK=1;
else M=$2; MONOK=1; 
fi

if [ $MONOK = 1 ] ;  then
  ls -l -R $1 | grep -e "$M";
else
  usagefunc;
fi

貌似没错啊,拿到本地执行通过了。

把报错的内容贴出来

可能是编码的问题,windows下修改文件和linux下修改文件,有的地方是不一样的

可能是换行符的问题, 用linux下的换行符 \n ,不能用 \r\n

是不是有不可见的特殊字符,都显示出来看看。删除掉

从内容看是ok的,可能是换行导致的。
但如果是\r\n的问题,在第一行blank的地方就应该报错了。
在vim里用set list看看有没有特殊字符。

是不是有其他的特殊字符的问题啊