Unix shell-意外标记“done';

Unix shell-意外标记“done';,unix,ksh,Unix,Ksh,下面是我的代码 #!/bin/ksh curdate=$(date '+%d%h,%Y') while read line; do echo "$line" > new10.txt str0=$(cut -f 2 new10.txt) str01=$(cut -f 1 -d ',' new10.txt) str1=$(cut -f 2 -d ',' new10.txt) str2=$(cut -c 3 $str1) if [ $str2=':' ]; then

下面是我的代码

#!/bin/ksh
curdate=$(date '+%d%h,%Y')
while read line;
do
  echo "$line" > new10.txt
  str0=$(cut -f 2 new10.txt)
  str01=$(cut -f 1 -d ',' new10.txt)
  str1=$(cut -f 2 -d ',' new10.txt)
  str2=$(cut -c 3 $str1)
  if [ $str2=':' ];
  then
    str2=',2016'
    finalstr=$str01$str2
    if [ '01jan2017' -le $finalstr -le $curdate ];
    then
      finalstr1=$str01',2017'
    else
      finalstr1=$str01',2016'
      echo $finalstr1 > datefinal.txt
    fi
done < /export/home/islams/PISAS/userwiseutil/date.txt
#/bin/ksh
curdate=$(日期'+%d%h,%Y')
读行时;
做
echo“$line”>new10.txt
str0=$(cut-f2 new10.txt)
str01=$(cut-f1-d','new10.txt)
str1=$(cut-f2-d','new10.txt)
str2=$(削减-c3$str1)
如果[$str2=':'];
然后
str2=',2016'
finalstr=$str01$str2
如果['2017年1月1日”-le$finalstr-le$curdate];
然后
finalstr1=$str01',2017'
其他的
finalstr1=$str01',2016'
echo$finalstr1>datefinal.txt
fi
完成
我遇到以下错误: date1.sh:第22行:意外标记附近出现语法错误
done'
date1.sh:第22行:
done
#/bin/ksh
#!/bin/ksh
curdate=$(date '+%d%h,%Y')
while read line;
do
  echo "$line" > new10.txt
  str0=$(cut -f 2 new10.txt)
  str01=$(cut -f 1 -d ',' new10.txt)
  str1=$(cut -f 2 -d ',' new10.txt)
  str2=$(cut -c 3 $str1)
  if [ $str2=':' ];
  then
    str2=',2016'
    finalstr=$str01$str2
    if [ '01jan2017' -le $finalstr -le $curdate ];
    then
      finalstr1=$str01',2017'
    else
      finalstr1=$str01',2016'
      echo $finalstr1 > datefinal.txt
    fi
  fi #You missed this
done < /export/home/islams/PISAS/userwiseutil/date.txt
curdate=$(日期'+%d%h,%Y') 读行时; 做 echo“$line”>new10.txt str0=$(cut-f2 new10.txt) str01=$(cut-f1-d','new10.txt) str1=$(cut-f2-d','new10.txt) str2=$(削减-c3$str1) 如果[$str2=':']; 然后 str2=',2016' finalstr=$str01$str2 如果['2017年1月1日”-le$finalstr-le$curdate]; 然后 finalstr1=$str01',2017' 其他的 finalstr1=$str01',2016' echo$finalstr1>datefinal.txt fi 你错过了这个 完成

您错过了一个fi

您尚未关闭您的
if
语句。我看到两个
if
,只有一个
fi
。另外,你应该使用缩进来让东西更容易阅读。看,我添加了缩进,问题变得很明显。请在发送到stackoverflow之前进行缩进,阅读您的帖子会更愉快,它会解决此类错误。非常感谢并为我的愚蠢错误感到抱歉。您能告诉我用于比较范围内日期的if语句是否正确吗?您不能在一个if语句中比较3件事情。考虑使用格式YYYYMMD,这将使比较日期更容易。