知识大全 两个很详细的shell 实例代码

Posted 文件

篇首语:人生必须的知识就是引人向光明方面的明灯。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 两个很详细的shell 实例代码相关的知识,希望对你有一定的参考价值。

两个很详细的shell 实例 一般编程步骤   现在我们来讨论编写一个脚本的一般步骤 任何优秀的脚本都应该具有帮助和输入参数 并且写一个伪脚本(framework sh) 该脚本包含了大多数脚本都需要的框架结构 是一个非常不错的主意 这时候 在写一个新的脚本时我们只需要执行一下copy命令 cp framework sh myscript   然后再插入自己的函数   让我们再看两个例子   二进制到十进制的转换   脚本 b d 将二进制数 (比如 ) 转换为相应的十进制数 这也是一个用expr命令进行数学运算的例子

  复制代码 代码如下:

  #!/bin/sh # vim: set sw= ts= et: help()  cat < b h convert binary to decimal USAGE: b h [ h] binarynum OPTIONS: h help text EXAMPLE: b h will return HELP  exit error()   # print an error and exit   echo $   exit lastchar()   # return the last character of a string in $rval   if [ z $ ]; then     # empty string     rval=     return   fi   # wc puts some space behind the output this is why we need sed:   numofchar=`echo n $ | wc c | sed s/ //g `   # now cut out the last char   rval=`echo n $ | cut b $numofchar` chop()   # remove the last character in string and return it in $rval   if [ z $ ]; then     # empty string     rval=     return   fi   # wc puts some space behind the output this is why we need sed:   numofchar=`echo n $ | wc c | sed s/ //g `   if [ $numofchar = ]; then     # only one char in string     rval=     return   fi   numofcharminus =`expr $numofchar `   # now cut all but the last char:   rval=`echo n $ | cut b $numofcharminus ` while [ n $ ]; do case $ in    h) help;shift ;; # function help is called    ) shift;break;; # end of options    *) error error: no such option $ h for help ;;   *) break;; esac done # The main program sum= weight= # one arg must be given: [ z $ ] && help binnum= $ binnumorig= $ while [ n $binnum ]; do   lastchar $binnum   if [ $rval = ]; then     sum=`expr $weight + $sum `   fi   # remove the last position in $binnum   chop $binnum   binnum= $rval   weight=`expr $weight * ` done echo binary $binnumorig is decimal $sum #

  该脚本使用的算法是利用十进制和二进制数权值 ( ) 比如二进制 可以这样转换成十进制 * + * =   为了得到单个的二进制数我们是用了lastchar 函数 该函数使用wc ?c计算字符个数 然后使用cut命令取出末尾一个字符 Chop函数的功能则是移除最后一个字符   文件循环程序   或许您是想将所有发出的邮件保存到一个文件中的人们中的一员 但是在过了几个月以后 这个文件可能会变得很大以至于使对该文件的访问速度变慢 下面的脚本rotatefile 可以解决这个问题 这个脚本可以重命名邮件保存文件(假设为outmail)为outmail 而对于outmail 就变成了outmail 等等等等

  复制代码 代码如下:

  这个脚本是如何工作的呢?在检测用户提供了一个文件名以后 我们进行一个Array到 的循环 文件Array被命名为 文件 重命名为Array等等 循环完成之后 我们将原始文件命名为文件 同时建立一个与原始文件同名的空文件 调试   最简单的调试命令当然是使用echo命令 您可以使用echo在任何怀疑出错的地方打印任何变量值 这也是绝大多数的shell程序员要花费 %的时间来调试程序的原因 Shell程序的好处在于不需要重新编译 插入一个echo命令也不需要多少时间   shell也有一个真实的调试模式 如果在脚本 strangescript 中有错误 您可以这样来进行调试 sh x strangescript   这将执行该脚本并显示所有变量的值   shell还有一个不需要执行脚本只是检查语法的模式 可以这样使用 sh n your_script   这将返回所有语法错误   我们希望您现在可以开始写您自己的shell脚本 希望您玩得开心 cha138/Article/program/yxkf/201404/30420

相关参考