Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39583
  • 博文数量: 14
  • 博客积分: 314
  • 博客等级: 一等列兵
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-20 12:00
文章分类

全部博文(14)

文章存档

2012年(14)

我的朋友
最近访客

分类: LINUX

2012-01-21 13:21:23

Linux shell脚本前面的实例是说明十进制和二进制的转换,还以一个有关文件循环的实例来结束这部分内容的学习。相信Linux shell脚本的基础学习的学习者应该能够掌握一些简单的Linux shell脚本的编写。

文件循环程序

或许您是想将所有发出的邮件保存到一个文件中的人们中的一员,但是在过了几个月以后,这个文件可能会变得很大以至于使对该文件的访问速度变慢。下面的 脚本rotatefile可

以解决这个问题。这个脚本可以重命名邮件保存文件(假设为outmail)为outmail.1,而对于 outmail.1就变成了outmail.2 等等等等...

  1. #!/bin/sh
  2. # vim: set sw=4 ts=4 et:
  3. ver="0.1"
  4. help()
  5. {
  6. cat <
  7. rotatefile -- rotate the file name
  8. USAGE: rotatefile [-h] filename
  9. OPTIONS: -h help text
  10. EXAMPLE: rotatefile out
  11. This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
  12. and create an empty out-file
  13. The max number is 10
  14. version $ver
  15. HELP
  16. exit 0
  17. }
  18. error()
  19. {
  20. echo "$1"
  21. exit 1
  22. }
  23. while [ -n "$1" ]; do
  24. case $1 in
  25. -h) help;shift 1;;
  26. --) break;;

  27. -*) echo "error: no such option $1. -h for help";exit 1;;
  28. *) break;;
  29. esac
  30. done
  31. # input check:
  32. if [ -z "$1" ] ; then
  33. error "ERROR: you must specify a file, use -h for help"
  34. fi
  35. filen="$1"
  36. # rename any .1 , .2 etc file:
  37. for n in 9 8 7 6 5 4 3 2 1; do
  38. if [ -f "$filen.$n" ]; then
  39. p=`expr $n + 1`
  40. echo "mv $filen.$n $filen.$p"
  41. mv $filen.$n $filen.$p
  42. fi
  43. done

  44. # rename the original file:
  45. if [ -f "$filen" ]; then
  46. echo "mv $filen $filen.1"
  47. mv $filen $filen.1
  48. fi
  49. echo touch $filen
  50. touch $filen

这个脚本是如何工作的呢?在检测用户提供了一个文件名以后,我们进行一个9到1的循环。文件9被命名为10,文件8重命名为9等等。循环完成之后,我们将原始文件命名为文件1

同时建立一个与原始文件同名的空文件。
调试

最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。Shell程序的

好处在于不需要重新编译,插入一个echo命令也不需要多少时间。

shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:

sh -x strangescript

这将执行该脚本并显示所有变量的值。

shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:

sh -n your_script

这将返回所有语法错误

这里Linux shell脚本基础学习就全部结束了。感谢大家的支持。

阅读(1087) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~