2017-01-12 73 views
0

下面是我的代碼。的Unix shell - 附近意外的標記語法錯誤'做」

#!/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 

我收到以下錯誤: date1.sh:22行:附近意外的標記done' date1.sh: line 22:語法錯誤進行< /export/home/islams/PISAS/userwiseutil/date.txt」

+1

您還沒有關閉您的if語句之一。我看到兩個'if'只有一個'fi'。此外,你應該使用縮進使事情更容易閱讀。 – ccarton

+0

你看,我已經添加了壓痕問題變得很明顯。請在發佈到stackoverflow之前進行縮進,閱讀您的文章更加愉快,它將解決這種錯誤 – Aaron

+0

非常感謝我的愚蠢錯誤。請您告訴我,如果在一個範圍內比較日期的if語句是正確的? –

回答

0
#!/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 

You miss one fi

相關問題