莽夫对《Shell脚本专家指南》的笔记(4)
莽夫
在读 Shell脚本专家指南
-
shell脚本的错误检测
常见的几种shell脚本调试方法,实际上和其他语言的调试方法大同小异,不过也有给自己眼前一亮的方法: 1,在脚本中用set option打出运行信息 set -x 提供大量的逻辑处理和脚本内部变量值的细节。调试信息会以+号开头显示。 set -v 打开冗余模式,将脚本执行的代码输出。 2,比较常用的,用echo输也想要得到的。 3,利用函数和 $?。$?为shell执行后的返回值,成功为0,失败为其他,写一个函数专门做一下处理,针对$?,得出相应的结果。 4,手动半单步调试,这是我比较常用的,利用echo和exit。 调试是个人习惯问题,不管用哪一种方法,能达到调试目的即可。
-
标准库函数
对于经常写脚本的朋友,把自己经常用到的或者是比较经典的脚本放到一起,以备后用,是较好的习惯。也减少了重复开发,提高效率。 需要注意的是,在使用库之前,需要把把库文件加载到shell里,这样才能调用。 加载方法: 1,source filename 2,. filename (点+空格+filename) ps:平时多注意积累,遇到好的或者很有用的function及时的收藏起来。
-
比较和测试
在写shell过程中,比较和测试是经常遇到的,以前对这块也比较迷惑。 自己几点需要注意的: 1,字符串比较用 = != >= <= 比较的变量要提前声明, 并用引号括起。 数字的比较用 -eq -nq -lt -gt 进行比较。 2,if [ ] 格式,注意要有空格。 3,if [ ] 方括号中间可以判断执行命令。
-
接受命令行选项、开关和参数
这一节主要介绍了命令行参数如何接收,用例子直接说明,很直白。 #! /bin/bash usage() { echo 'basename $0' [-a] [-b] args exit 0 } while getopts "ab:" options;do case $options in a) echo "you enter -a as an option";; b) echo "you enter -b as an option" echo "\$OPTARG is $OPTARG";; \?) usage;; esac done getopts option_string variable option_string包含一个有效的单字符选项。若getopts命令在命令行中发现了连字符,那么它将用连字符后面的字符同option_string相比较。若有匹配,则把变量variable的值设为该选项。若无匹配,则variable设为?。当getopts发现连字符后面没有字符,会返回一个非零的状态值。Shell程序中可以利用getopts的返回值建立一个循环。 下面代码简要说明了怎么使用getopts命令处理选项。 如一参数后面加有:(冒号),表明可接收参数值。値赋给了$OPTARG这个环境变量。