if if else shell脚本中的fi in出错

时间:2015-05-06 09:12:22

标签: shell if-statement

有一个shell脚本,if,then,else。这是代码的一部分,它不是整体,只是部分:

DAYOFWEEK=$(date +"%u")
echo $DAYOFWEEK
if [ "$DAYOFWEEK" -eq 1 ]; then
echo "OK. It's Monday. We are running a weekly backup on Mondays."

echo "`date` - Deleting weekly remote backup files."
sftp -oPort=199 $SFTPUSER@$SFTPSITE <<EOF;
    cd user;
    cd weekly;
    ls -al;
    rm *;
    bye;
    EOF;
    echo "DONE"
rsync -ave "ssh -p 199" /root/backups/files/$THESITE/daily/ 
root@coolsite.org:/root/user/weekly
else
 echo "No weekly backups today"
fi

我得到了错误:

./backup.sh: 120: ./backup.sh: Syntax error: end of file unexpected (expecting "fi")

根@ developementbox:〜/备份#

它不喜欢fi,我不明白这有什么问题。

1 个答案:

答案 0 :(得分:2)

终止你的sftp命令的EOF必须从行的开头开始,不得以终止;

正在发生的事情是sftp继续使用你的shell脚本的其余部分,包括返回控制之前的fi,因为fi被错误地视为sftp命令,所以你的if条件没有终止。

在EOF和之前删除空格或制表符;在包括EOF终结器在内的所有sftp命令之后你应该好好去。