此处文档 - 意外的文件结尾
here document - unexpected end of file
我一直在尝试运行本书 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_
此处文档的<<-
形式对前导白非常敏感space。他们只允许标签。如果您不小心使用了前导 space 或您的编辑器自动展开选项卡,则此处文档将永远找不到其结束标记,这将解释您看到的错误。
如果您想保持缩进,但又想使用 <<-
符号的替代方法,请考虑仅使用 echo
或 printf
,例如:
report() {
printf '<H2>%s</H2>\n<PRE>%s</PRE>\n' "" ""
}
report_home_space() {
report 'Home Space Utilization' "$(du -sh ~/*)"
}
# Other reports as above...
我一直在尝试运行本书 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_
此处文档的<<-
形式对前导白非常敏感space。他们只允许标签。如果您不小心使用了前导 space 或您的编辑器自动展开选项卡,则此处文档将永远找不到其结束标记,这将解释您看到的错误。
如果您想保持缩进,但又想使用 <<-
符号的替代方法,请考虑仅使用 echo
或 printf
,例如:
report() {
printf '<H2>%s</H2>\n<PRE>%s</PRE>\n' "" ""
}
report_home_space() {
report 'Home Space Utilization' "$(du -sh ~/*)"
}
# Other reports as above...