2017-01-12 15 views
0

以下は私のコードです。Unixシェル - 予期しないトークンの近くで構文エラーが発生しました

#!/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:< /export/home/islams/PISAS/userwiseutil/date.txt」

+1

'if'ステートメントの1つを閉じていません。私は2つの「if」と1つの「fi」しか見ない。また、読みやすいようにインデントを使用する必要があります。 – ccarton

+0

見て、私はインデントを追加し、問題が明らかになります。あなたの投稿を読むことはより楽しいと、この種のエラーを解決します – 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 
を行って予期しないトークン done' date1.sh: line 22:の近くに構文エラーを

あなたは1つのfiを逃しました

関連する問題