有一个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,我不明白这有什么问题。
答案 0 :(得分:2)
终止你的sftp命令的EOF必须从行的开头开始,不得以终止;
正在发生的事情是sftp继续使用你的shell脚本的其余部分,包括返回控制之前的fi,因为fi被错误地视为sftp命令,所以你的if条件没有终止。
在EOF和之前删除空格或制表符;在包括EOF终结器在内的所有sftp命令之后你应该好好去。