Bash 此处是文档-意外的文件结尾

Bash 此处是文档-意外的文件结尾,bash,shell,Bash,Shell,我一直在尝试从book Linux命令行运行以下脚本,但在文件结尾出现了一个错误。我以增量方式填写了每个函数,问题似乎出在函数报告_home_space()。不过剧本在我看来还行 知道问题在哪里吗 #!/bin/bash # Program to output a system information page declare -r TITLE="System Information Report for $HOSTNAME" declare -r CURRENT_TIME=$(date)

我一直在尝试从book Linux命令行运行以下脚本,但在文件结尾出现了一个错误。我以增量方式填写了每个函数,问题似乎出在函数报告_home_space()。不过剧本在我看来还行

知道问题在哪里吗

#!/bin/bash

# Program to output a system information page

declare -r TITLE="System Information Report for $HOSTNAME"
declare -r CURRENT_TIME=$(date)
declare -r TIMESTAMP="Generated $CURRENT_TIME, by $USER"

report_uptime(){
        cat <<- _EOF_
                <H2>System Uptime</H2>
                <PRE>$(uptime)</PRE>
                _EOF_
        return
}

report_disk_space(){
        cat <<- _EOF_
                <H2>Disk Space Utilization</H2>
                <PRE>$(df -h)</PRE>
                _EOF_
        return
}

report_home_space(){
        cat <<- _EOF_
                <H2>Home Space Utilization</H2>
                <PRE>$(du -sh ~/*)</PRE>
                _EOF_
        return
}

cat << _EOF_ 
<HTML>
        <HEAD>
                <TITLE>$TITLE</TITLE>
        </HEAD>
        <BODY>
                <H1>$TITLE</H1>
                <P>$TIMESTAMP</P>
                $(report_uptime)
                $(report_disk_space)
                $(report_home_space)
        </BODY>
</HTML>
_EOF_
#/bin/bash
#用于输出系统信息页的程序
declare-r TITLE=“$HOSTNAME的系统信息报告”
声明-r当前时间=$(日期)
declare-r TIMESTAMP=“由$USER生成的$CURRENT\u时间”
报告正常运行时间(){

catThe
谢谢!这确实是report\u home\u space()函数中的前导空格问题。我删除了该函数的here文档中所有行的前导空格,然后确保只使用制表符。
report() {
    printf '<H2>%s</H2>\n<PRE>%s</PRE>\n' "$1" "$2"
}

report_home_space() {
    report 'Home Space Utilization' "$(du -sh ~/*)"
}

# Other reports as above...