加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – here document – 意外的文件结尾

发布时间:2020-12-15 21:00:46 所属栏目:安全 来源:网络整理
导读:参见英文答案 here-document gives ‘unexpected end of file’ error????????????????????????????????????4个 我一直在尝试从Linux命令行一书中运行以下脚本,但是收到错误意外的文件结尾.我逐步填写每个函数,似乎问题在于函数report_home_space().不过,这
参见英文答案 > here-document gives ‘unexpected end of file’ error????????????????????????????????????4个
我一直在尝试从Linux命令行一书中运行以下脚本,但是收到错误意外的文件结尾.我逐步填写每个函数,似乎问题在于函数report_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_

解决方法

这里的<< - 形式的文档对前导空格非常敏感.他们只允许标签.如果您不小心使用了前导空格或编辑器自动展开了标签,则此文档永远不会找到其结束标记,这将解释您看到的错误. 如果你想保持缩进,但想要替换<< - notation,可以考虑使用echo或printf,如下所示:

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...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读