LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 908|回复: 4

请各位高手指点,看看我这样写的批处理文件对不对(在线等 谢谢)

[复制链接]
发表于 2007-12-19 12:28:40 | 显示全部楼层 |阅读模式
环境:   我现在是用   putty进行远程操作。
需求:   我需要编写一个批处理文件。
作用:   当我运行Ant命令时,将Ant运行的内容发送到log.txt文件中,然后判断log文件中是否有"BUILD   SUCCESSFUL"这个字符,如果有,就让一个名为about.html文件显示当前时间和状态:"BUILD   SUCCESSFUL"。如果没有,就让about.html文件显示当前时间和状态:"BUILD   FALSE"。
最终结果: 我访问这个about.html文件时。能看到到两个内容,一个是当前的时间,一个是状态 。
        状态分为两个,"BUILD  SUCCESSFUL"和"BUILD   FALSE"。

我是一个超级新手   下面是我写的代码   请各位大虾   能够指点一下~~

#!/sh
echo   > >   log.txt;
ant   > >   log.txt;
dat=date;
a=cat   log.txt ¦grep   "BUILD   SUCCESSFUL" ¦wc   -l;
b="BUILD   SUCCESSFUL";
c="BUILD   FALSE";
if   [$a   !=   0]
  then   
              " <HTML>
  <HEAD>
    <TITLE>   New   Document   </TITLE>
  </HEAD>
  <BODY>
    ant   date:echo   $dat
    state:echo   $c
  </BODY>
</HTML> "
    else
              <HTML>
  <HEAD>
    <TITLE>   New   Document   </TITLE>
  </HEAD>
  <BODY>
    ant   date:echo   $dat
    state:echo   $c
  </BODY>
</HTML>
fi


谢谢~~~~~
发表于 2007-12-19 18:09:04 | 显示全部楼层
兄弟,你不会是写完后连运行都没运行就贴上来了吧?

只能说错误太多,“指点一下”是根本解决不了问题的, 所以大家看到后也就没指点的兴趣了。
我按你的意思改了一下,建议你逐行对照,自己检查吧,也可以对照自己的看看哪些地方有问题。你可以这样调试: sh -x <yourfile>, 看看bash的出错信息

嗯,可能有些话有点过分了,请勿怪。  (:
  1. #!/bin/sh
  2. echo > log.txt
  3. ant >> log.txt 2>&1   # 将错误与输出均重定向到log.txt
  4. dat=$(date)
  5. a=$(cat log.txt |grep "BUILD SUCCESSFUL" |wc -l)
  6. b="BUILD SUCCESSFUL"
  7. c="BUILD FALSE"
  8. if [ $a != 0 ]
  9. then
  10. echo " <HTML>
  11. <HEAD>
  12. <TITLE> New Document </TITLE>
  13. </HEAD>
  14. <BODY>
  15. ant date: $dat
  16. state: $c
  17. </BODY>
  18. </HTML> " > about.html
  19. else
  20. echo "<HTML>
  21. <HEAD>
  22. <TITLE> New Document </TITLE>
  23. </HEAD>
  24. <BODY>
  25. ant date: $dat
  26. state: $b
  27. </BODY>
  28. </HTML>" > about.html
  29. fi
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-27 11:19:52 | 显示全部楼层
呵呵 谢谢楼上的帮助 我已经写好了 这是我写的:
#!/bin/bash

rm -f log.txt;
rm -f about.html;
ant >> log.txt;
a=`grep "BUILD SUCCESSFUL" log.txt|wc -l`;
b="BUILD SUCCESSFUL";
c="BUILD FALSE";
dat=`date`;
        echo "<HTML>" >> about.html
        echo "<HEAD>" >> about.html
        echo "<TITLE> New Document </TITLE>" >> about.html
        echo "</HEAD>" >> about.html
        echo "<BODY>" >> about.html
        echo "ant date:" $dat >> about.html
if [ $a != 0 ]
then
        echo "state:" $b >> about.html
  else
        echo "ant date:" $dat >> about.html
        echo "state:" $c >> about.html
        echo "</BODY>" >> about.html
        echo "</HTML>" >> about.html
fi
        echo "</BODY>" >> about.html
        echo "</HTML>" >> about.html
回复 支持 反对

使用道具 举报

发表于 2007-12-27 15:57:31 | 显示全部楼层
语法应该没问题了,不过后半部分在逻辑上似乎有点问题:
  1. echo "ant date:" $dat >> about.html
  2. if [ $a != 0 ]
  3. then
  4. echo "state:" $b >> about.html
  5. else
  6. echo "ant date:" $dat >> about.html
  7. echo "state:" $c >> about.html
  8. echo "</BODY>" >> about.html
  9. echo "</HTML>" >> about.html
  10. fi
  11. echo "</BODY>" >> about.html
  12. echo "</HTML>" >> about.html
复制代码
应该如下才对吧:
  1. echo "ant date:" $dat >> about.html
  2. if [ $a != 0 ]
  3. then
  4.         echo "state:" $b >> about.html
  5. else
  6.         echo "state:" $c >> about.html
  7. fi
  8. echo "</BODY>" >> about.html
  9. echo "</HTML>" >> about.html
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-27 16:28:49 | 显示全部楼层
是的~~ o(∩_∩)o... 你说的那个问题我改过了~~不过粘贴的时候粗心把老版本的粘上去了~
真是不好意思 呵呵~~ 谢谢~~~~~~
对了我还有一个帖子不知道你看到了么?~ 那个问题让我头疼了好久。不知道 你有没有什么好的方法~~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表