LinuxSir.cn,穿越时空的Linuxsir!

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

一个用来生成bash程序头部并编辑程序的bash脚本

[复制链接]
发表于 2005-8-9 19:02:10 | 显示全部楼层 |阅读模式
题目有点绕了,举个例子,大家就明白这个脚本的作用了。
假设我们现在要写一个脚本,我们会怎么做?
我们会:
1,emacs(or vi) scriptname
2,写上#!/bin/bash
3,写上作者和日期信息
4,写程序正文
5,保存并退出编辑器
6,chmod u+x scriptname
7.执行
哇。。。,我于是写了一个小脚本,称为mkscript,它节省了1,2,3,6这四个步骤,无论怎么说,简便多了。

  1. #!/bin/bash

  2. myeditor="emacs"

  3. if [ $# != "1" ]
  4.     then
  5.     echo "Usage : mkscript <filename>"
  6.     exit 1
  7. elif [ $1 = "-h" ]
  8.     then
  9.     echo "Usage : mkscript <filename>"
  10.     exit 0
  11. elif [ -e $1 ]
  12.     then
  13.     echo "Error: file $1 exist."
  14.     exit 2
  15. fi

  16. echo -n "Create file $1..."
  17. filecontent="#!/bin/bash


  18. ##########################################################
  19. #                                                        #
  20. #     Program :                                          #
  21. #     Author  : kiron                                    #
  22. #     Date    : "

  23. echo -n "${filecontent}$(date +%Y-%m-%d)" >$1

  24. cat<<EOF >>$1
  25.                                #
  26. #     version :                                          #
  27. #                                                        #
  28. ##########################################################

  29. EOF

  30. echo -e  "done\nEdit $1..."

  31. $myeditor $1

  32. echo -e -n "done!\nEnable execute bit..."

  33. chmod u+x $1

  34. echo -e "done!\nByebye..."

  35. exit 0
复制代码


执行:

  1. $./mkscript -h
  2. Usage : mkscript <filename>
  3. $./mkscript myscript
  4. Create file file...done!
  5. Edit file...
  6. ......editing.......
  7. done!
  8. Enable execute bit...done!
  9. Byebye...
  10. $
复制代码
发表于 2005-8-9 22:51:11 | 显示全部楼层
不错,我也有这个东西,不过我的想法是新建是直接从一个模板里cp.因为我的模板是固定的.无需填写日期..
回复 支持 反对

使用道具 举报

发表于 2005-8-9 23:30:52 | 显示全部楼层
改动了一下

[php]
#!/bin/bash

myeditor="vim"

if [ $# != "1" ]
then
        echo "Usage : mkscript <filename>"
        exit 1
elif [ $1 = "-h" ]
then
        echo "Usage : mkscript <filename>"
        exit 0
elif [ -e $1 ]
then
        echo "Error: file $1 exist."
        exit 2
fi

echo -n "Create file $1..."

cat > $1 <<EOF
#!/bin/bash
#
#     Program : $1
#     Author  : Huang Jiahua <jhuangjiahua@gmail.com>
#     Date   `date` :
#
#     version :
#


EOF

echo -e  "done\nEdit $1..."

$myeditor $1

echo -e -n "done!\nEnable execute bit..."

chmod u+x $1

echo -e "done!\nByebye..."

exit 0
[/php]
回复 支持 反对

使用道具 举报

发表于 2005-8-10 01:26:49 | 显示全部楼层
有什么意义么?
养成良好的习惯,比什么都重要! :8
回复 支持 反对

使用道具 举报

发表于 2005-8-10 07:28:32 | 显示全部楼层
Post by jhuangjiahua
改动了一下

[php]
#!/bin/bash

myeditor="vim"

if [ $# != "1" ]
then
        echo "Usage : mkscript <filename>"
        exit 1
elif [ $1 = "-h" ]
then
        echo "Usage : mkscript <filename>"
        exit 0
elif [ -e $1 ]
then
        echo "Error: file $1 exist."
        exit 2
fi

echo -n "Create file $1..."
filecontent="#!/bin/bash


##########################################################
#
#     Program : $1
#     Author  : Huang Jiahua <jhuangjiahua@gmail.com>
#     Date    : "

echo -n "${filecontent}$(date +%Y-%m-%d)" >$1

cat<<EOF >>$1
#
#     version :
#
##########################################################

EOF

echo -e  "done\nEdit $1..."

$myeditor $1

echo -e -n "done!\nEnable execute bit..."

chmod u+x $1

echo -e "done!\nByebye..."

exit 0
[/php]

严重盗版!
回复 支持 反对

使用道具 举报

发表于 2005-8-10 07:31:47 | 显示全部楼层
自己用无所谓啦
回复 支持 反对

使用道具 举报

发表于 2005-8-10 09:23:31 | 显示全部楼层
If you use emacs as the editor. you can add this to emacs with el file.
回复 支持 反对

使用道具 举报

发表于 2005-8-10 09:41:46 | 显示全部楼层
当然
vim 也一样

但是感觉还是 mkscript 方便些
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-10 10:10:00 | 显示全部楼层
Post by jhuangjiahua
当然
vim 也一样

但是感觉还是 mkscript 方便些


正是如此。。。
如果是写C代码,那么用上面的办法就不好
写C代码大家都知道开头总是一大堆的#define,#include之类的,我就是绑定几个快捷键来插入。
C代码同时编译,调试在emacs里进行,所以写一个脚本来简化步骤起不到什么作用。

脚本却不同,像我上面所说的,可以简化一些开头的我认为没有什么太大意义的键入字符,可以使工作简化许多,虽然emacs编辑器也可以使用快捷键来指定一些字符插入,像上面mkscript插入的一样,不过想想你要按几个快捷键才行?并且编辑器退出后,你必须要chmod脚本才行,当然你可以用.或source命令来执行,这样显得就有些繁琐。

SHELL最重要的工作之一是使人们的工作简化,我觉得这点很重要
一样事情能用许多种方法完成,我总是倾向于挑最有效率的方法
回复 支持 反对

使用道具 举报

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

本版积分规则

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