我正在尝试在Bash的IF ELSE语句中执行操作,但收到类似这样的错误:
语法错误:文件结束意外(期待“fi”)
现在我对此很陌生,所以解决我的问题可能不会那么困难:)
if [ "$DAYNAME" = 'Sunday' ]; then
echo 'The backup will be uploaded'
ftp -n $HOST <<EOF
quote USER $USER
quote PASS $PASSWD
put $filetoday
delete ${filethreeweeksago}
quit
EOF
fi
当然,变量已经填满了。
我认为它与EOF表示法有关,因为当我删除它们时,问题就会消失。不幸的是,我不知道如何在没有EOF表示法的情况下使用代码。
有谁能告诉我为什么会出现这个错误?
答案 0 :(得分:12)
删除空白,它应该有效:
EOF
^^^^
答案 1 :(得分:1)
如果要保留标签,请在EOF中添加短划线: 从:
ftp -n $HOST <<EOF
为:
ftp -n $HOST <<-EOF
答案 2 :(得分:1)
https://github.com/koalaman/shellcheck/wiki/SC1039
<块引用>此处的文档分隔符如果缩进将无法识别。
您可以通过以下两种方式之一进行修复:
1. 只需删除缩进,即使这可能会破坏格式。
2.使用<<-代替<<,并仅使用制表符缩进脚本(无法识别空格)。
最好删除缩进,因为如果重新格式化、复制粘贴或使用其他编辑器保存脚本,脚本不会突然中断。
答案 3 :(得分:0)
If-Else内的终止服务
EOL的语法可以是这种类型
if [ condition ]; then
echo "Comment"
else
cat >> file.txt <<-EOL
EOL
fi