Linux服务器Shell脚本编程学习入门:Shell编程基础(3)

前言:shell脚本编程入门学习基础,文中有很详细的讲解了shell脚本的应用,希望能对你有帮助,一起来看。

文件循环转载

你可能有这样的需求并一直都这么做:将所有发出邮件保存到一个文件中。但是过了几个月之后,这个文件可能会变得很大以至于该文件的访问速度变慢;下 面的shell脚本 rotatefile 可以解决这个问题。这个脚本可以重命名邮件保存文件(假设为outmail)为outmail.1,而原来的outmail.1就变成了 outmail.2 等等...

#!/bin/sh
# vim: set sw=4 ts=4 et:

ver="0.1"
help()
{
   cat << HELP
   rotatefile -- rotate the file name
   USAGE: rotatefile [-h] filename
   OPTIONS: -h help text
   EXAMPLE: rotatefile out

   This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1[BR]
   and create an empty out-file

   The max number is 10
   version $ver
HELP
   exit 0
}

error()
{
   echo "$1"
   exit 1
}

while [ -n "$1" ]; do
   case $1 in
      -h) help;shift 1;;
      --) break;;
      -*) echo "error: no such option $1. -h for help";exit 1;;
      *) break;;
   esac
done

# input check:
if [ -z "$1" ] ; then
   error "ERROR: you must specify a file, use -h for help"
fi

filen="$1"
# rename any .1 , .2 etc file:
for n in 9 8 7 6 5 4 3 2 1; do
   if [ -f "$filen.$n" ]; then
      p=`expr $n + 1`
      echo "mv $filen.$n $filen.$p"
      mv $filen.$n $filen.$p
   fi
done

# rename the original file:
if [ -f "$filen" ]; then
   echo "mv $filen $filen.1"
   mv $filen $filen.1
fi

echo touch $filen
touch $filen

这个shell脚本是如何工作的呢?在检测到用户提供了一个文件名之后,首先进行一个9到1的循环;文件名.9重命名为文件名.10,文件名.8重 命名为文件名. 9……等等。循环结束之后,把原始文件命名为文件名.1,同时创建一个和原始文件同名的空文件(touch $filen)

脚本调试

最简单的调试方法当然是使用echo命令。你可以在任何怀疑出错的地方用echo打印变量值,这也是大部分shell程序员花费80%的时间用于调试的原因。Shell脚本的好处在于无需重新编译,而插入一个echo命令也不需要多少时间。

shell也有一个真正的调试模式,如果脚本"strangescript"出错,可以使用如下命令进行调试:

sh -x strangescript

7 上述命令会执行该脚本,同时显示所有变量的值。

shell脚本中还有一个不执行脚本只检查语法的模式,命令如下:

sh -n your_script

这个命令会返回所有语法错误。

我们希望你现在已经可以开始编写自己的shell脚本了,尽情享受这份乐趣吧!

上一章《Linux服务器Shell脚本编程学习入门:Shell编程基础(2)

(注:本文摘自网络)


» 本文链接:https://blog.apires.cn/archives/1016.html
» 转载请注明来源:Java地带  » 《Linux服务器Shell脚本编程学习入门:Shell编程基础(3)》

» 本文章为Java地带整理创作,欢迎转载!转载请注明本文地址,谢谢!
» 部分内容收集整理自网络,如有侵权请联系我删除!

» 订阅本站:https://blog.apires.cn/feed/

标签: Shell脚本编程, Linux脚本编程, 服务器脚本编程

添加新评论