1

我正在关注这个关于解析参数的教程。当我运行带有或不带参数的脚本时,我得到“第 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
4

1 回答 1

8

这是因为你缩进了EOF这里

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

由于缩进,bash 不会“看到”终止符EOF,因此实际上您的 here-doc 未终止,这会导致“文件意外结束”。

于 2013-06-27T12:21:28.160 回答