2017-01-12 3 views
0

Unten ist mein Code.Unix-Shell - Syntaxfehler in der Nähe von unerwartetem Token `done '

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

Ich erhalte folgende Fehler: date1.sh: Zeile 22: Syntaxfehler in der Nähe von unerwartetem Token done' date1.sh: line 22: < getan /export/home/islams/PISAS/userwiseutil/date.txt‘

+1

Sie haben keine Ihrer 'if'-Anweisungen geschlossen. Ich sehe zwei 'if' und nur eine' fi'. Außerdem sollten Sie die Einrückung verwenden, um die Lesbarkeit zu verbessern. – ccarton

+0

Schau, ich habe einen Einzug eingefügt und das Problem wird offensichtlich. Bitte vor dem Posten in stackoverflow einrücken, es ist angenehmer, Ihren Beitrag zu lesen und es wird diese Art von Fehler zu lösen – Aaron

+0

Vielen Dank und Entschuldigung für meine dumme Fehler. Könnten Sie mir bitte wissen lassen, wenn die if-Anweisung für den Vergleich Datum in einem Bereich korrekt ist ? –

Antwort

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 

Sie vermissten eine fi

Verwandte Themen