1
我正在尝试查找哪里可能存在不匹配的标记或引号,但它正在逃避我。我收到的错误是第48行的意外EOF,它只告诉我我已经知道了什么。这是我简单的脚本:Shell:意外的文件结尾
#!/bin/bash
# Program to output a system information page
TITLE="System Information for $HOSTNAME"
CURRENT_TIMESTAMP=$(date +"%x %r %Z")
TIME_STAMP="Generated $CURRENT_TIMESTAMP, 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 /home/*)</PRE>
_EOF_
return
}
cat << _EOF_
<HTML>
<HEAD>
<TITLE>$TITLE</TITLE>
</HEAD>
<BODY>
<H1>$TITLE</H1>
<P>$TIME_STAMP</P>
$(report_uptime)
$(report_disk_space)
$(report_home_space)
</BODY>
</HTML>
_EOF_
'_EOF_'是否缩进实际的制表符?如果他们不是,那么bash不会兑现他们。用空格缩进意味着bash将永远不会看到_EOF_终止符并在脚本的末尾运行。请参阅:http://unix.stackexchange.com/questions/76481/cant-indent-heredoc-to-match-nestings-indent –
我认为我有我的tabstops设置为4空格,而不是由于Python的选项卡,但我以为“ - 否定了这个? – flybonzai
是的,但缩进必须使用实际的选项卡。空间,你的编辑,对待,作为选项卡将无法正常工作。 bash不会关心你使用的编辑器,它只能看到文件中的内容,文件中的内容必须是实际的选项卡字符(ascii 9)而不是空格(ascii 32)。 '<< - '允许缩进终止符,但不会奇迹般地使空格作为缩进字符。 –