为什么我会收到“意外的文件结束”?

时间:2013-06-27 12:15:18

标签: bash

我正在关注解析参数的this教程。当我使用或不使用参数运行脚本时,我得到“第45行:语法错误:意外的文件结束”。 这是脚本中最后一行之后的行。我只是看不到错误(bash脚本新...)。

#!/bin/bash

#Explain arguments that can be passed in
argumentUsage(){
    cat << EOF
    usage: $0 options

    This script configures rsync to backup SOURCE to DESTINATION and provide notifications on status.

    OPTIONS:
       -h    Show this message
       -s    Source location
       -d    Destination location
    EOF
}

DESTINATION=
SOURCE=

while getopts "hs:d:" OPTION
do 
   case $OPTION in
    h)
       argumentUsage()
       exit1
       ;;
    s)
       SOURCE=$OPTARG
       ;;
    d)
       DESTINATION=$OPTARG
       ;;
    ?)
       argumentUsage()
       exit
       ;;
   esac
done

1 个答案:

答案 0 :(得分:7)

这是因为你缩进EOF这里

argumentUsage(){
     ...
     OPTIONS:
       -h    Show this message
       -s    Source location
       -d    Destination location
     EOF
}

由于缩进,bash没有“看到”终止EOF,因此有效地使你的here-doc无法终止,这会导致“意外的文件结束”。