bash函数返回“未找到命令”

时间:2015-06-09 03:01:38

标签: bash shell scripting

我一直在尝试让这个功能工作而不会返回错误,但到目前为止我无法弄清楚问题是什么。我正在使用$(report_home_space)在一小部分hmtl上插入函数的内容,但在第30行继续收到错误: report_home_space:command not found

 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_

2 个答案:

答案 0 :(得分:4)

顺便说一下,你的脚本运行正常。在上传到UNIX环境之前,你有没有机会在Windows环境中输入它? 尝试运行:

dos2unix script.sh

这样做是将行结尾从Windows更改为unix格式。即它从行结尾剥离\ r(CR)以将它们从\ r \ n(CR + LF)更改为\ n(LF)。

另外,在HTML备注中,您错过了&#34;&lt;的结束标记。 HEAD&gt;&#34;在你的标题标签之后。

enter image description here

答案 1 :(得分:0)

您还可以执行“ od -c文件名”或“ grep模式文件名| od -c” 看看里面是否有隐藏的字符。