bash 函数 returns "command not found"
bash functions returns "command not found"
我一直在努力让这个函数正常工作而不返回错误,但到目前为止我无法弄清楚问题出在哪里。我正在使用 $(report_home_space) 在一小段 hmtl 上插入函数的内容,但不断收到错误消息:report_home_space: command not found在第 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_
顺便说一句,您的脚本运行良好。在上传到 UNIX 环境之前,您有没有在 Windows 环境中输入它?
试试 运行:
dos2unix script.sh
这样做是将行尾从 Windows 更改为 unix 格式。也就是说,它从行尾剥离 \r (CR) 以将它们从 \r\n (CR+LF) 更改为 \n (LF)。
此外,在 HTML 注释中,您的标题标签后缺少“< HEAD >”的结束标签。
您也可以执行“od -c 文件名”或“grep 模式文件名 | od -c”
看看里面有没有隐藏字符
我一直在努力让这个函数正常工作而不返回错误,但到目前为止我无法弄清楚问题出在哪里。我正在使用 $(report_home_space) 在一小段 hmtl 上插入函数的内容,但不断收到错误消息:report_home_space: command not found在第 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_
顺便说一句,您的脚本运行良好。在上传到 UNIX 环境之前,您有没有在 Windows 环境中输入它? 试试 运行:
dos2unix script.sh
这样做是将行尾从 Windows 更改为 unix 格式。也就是说,它从行尾剥离 \r (CR) 以将它们从 \r\n (CR+LF) 更改为 \n (LF)。
此外,在 HTML 注释中,您的标题标签后缺少“< HEAD >”的结束标签。
您也可以执行“od -c 文件名”或“grep 模式文件名 | od -c” 看看里面有没有隐藏字符