知识大全 两个很详细的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相关参考