我们再就下面一个例子,看看case语句的用法。 while getopts vc:OPTION do case $OPTION in c) COPIES = $OPTARG;; v) …;; /?) exit 1;; esac done 上面的getopts类似于C语言提供的函数getopts,在Shell Script中,getopts经常和while语句联合起来使用。getopts的语法如下: getopts option_string variable option_string中包含一串单字符选项,若getopts在命令行参数中发现了连字符,那么它会将连字符之后的字符与option_string进行比较,若匹配成功,则把变量variable的值设为该选项,若无匹配,则把变量的值设为?。有时候,选项还会带一个值,例如-c5等,这时要在option_string中该选项字母后面加上一个冒号,getopts发现冒号后,会读取该值,然后将该值放入特殊变量OPTARG中。这个命令比较复杂,如有需要,读者可以详细参阅Shell编写的相关资料。 上面这个循环的作用就是依次取出脚本名称后面的选项,进行处理,如果输入了非法选项,则进入/?指定的部分,退出脚本程序。 第二个,Bash提供了一种用于交互式应用的扩展select,用户可以从一组不同的值中进行选择。其语法如下: select var in …; do break; done 例如,下面这段程序的输出是: #!/bin/bash echo "Your choice?" select var in "a" "b" "c"; do break done echo $var ---------------------------- Your choice? 1) a 2) b 3) c 第三,Shell Script中也可以使用自定义的函数,其语法形式如下: functionname() { … } 例如我们可以把上面第二个例子中第四到第十二行放入一个名为help函数体内,以后每次调用的时候直接写help即可。函数中处理函数调用参数的方法是,直接用上面讲过的$1、$2来分别表示第一、第二个参数,用$*表示参数列表。 第四,我们也可以在Shell下调试Shell Script脚本,当然最简单的方法就是用echo输出查看变量取值了。Bash也提供了真正的调试方法,就是执行脚本的时候用-x参数。 sh ?x filename.sh 这会执行脚本并显示脚本中所有变量的取值,也可以使用参数-n,它并不执行脚本,只是返回所有的语法错误。(n101)
本文介绍了Shell脚本中的高级特性,包括case语句的使用、交互式select命令、自定义函数及调试方法。通过实例展示了如何运用这些特性提高脚本功能。

被折叠的 条评论
为什么被折叠?



