我一直在尝试让这个函数正常运行而不返回错误,但是目前我仍然无法弄清问题所在。我正在使用$(report_home_space)将函数的内容插入到一小段html中,但是总是出现错误:report_home_space: 命令未找到,位于第30行。
report_home_space () {
cat <<- _EOF_
<H2>Home Space Utilization</H2>
<PRE>$(du -sh /home/*)</PRE>
_EOF_
}
我是一个新手Shell脚本编程,但我在函数的语法和拼写上没有发现任何错误。谢谢。
完整脚本如下:
#!/bin/bash
# Program to output a system information page
TITLE="System Information Report For $HOSTNAME"
CURRENT_TIME=$(date +"%x %r %z")
TIMESTAMP="Generated $CURRENT_TIME, by $USER"
report_uptime () {
cat <<- _EOF_
<H2>system Uptime</H2>
<PRE>$(uptime)</PRE>
_EOF_
}
report_disk_space () {
cat <<- _EOF_
<H2>Disk Space Ulitilizatoin</H2>
<PRE>$(df -h)</PRE>
_EOF_
}
report_home_space () {
cat <<- _EOF_
<H2>Home Space Utilization</H2>
<PRE>$(du -sh /home/*)</PRE>
_EOF_
}
cat << _EOF_
<HTML>
<HEAD>
<TITLE>$TITLE</TITLE>
<BODY>
<H1>$TITLE</H1>
<P>$TIMESTAMP</P>
$(report_uptime)
$(report_disk_space)
$(report_home_space)
</BODY>
<HTML>
_EOF_
<<-
是有风险的,因为复制/粘贴过程中很容易将制表符转换为空格;更安全的做法是使用<<
并不缩进关闭分隔符,尽管这样看起来很丑。 - Charles Duffycat
调用会更有效率(毕竟所有调用都涉及到fork()
/exec()
循环)。考虑使用printf '%s\n' "<H2>System Uptime</H2>" "<PRE>$(uptime)</PRE>"
或类似的方法。 - Charles Duffyprintf
的建议,但你比我快了 :) - ghotiprintf
可能会更好。谢谢。 - wrfc