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... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |