知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

[shell]在函数中使用getopts

发布时间:2014-09-05 15:03:08作者:知识屋

[shell]在函数中使用getopts
 
以前在.bashrc中写过一个函数,里面使用了getopts, 但是奇怪的是,这个函数调用过一次后,就不能再次解析参数,后来经过查询,发现是OPTIND变量的问题, 原代码如下:
  www.zhishiwu.com  
01
function stjob(){
02
    #unset OPTIND   
03
    while getopts ":rsd" opt; do
04
        case $opt in
05
            r ) echo $opt ;;
06
            s ) echo $opt ;;
07
            d ) echo $opt ;;
08
            /? ) echo "Usage stjob -d -s -r"
09
                        return ;;
10
        esac
11
    done
12
}
出问题的原因是,经过第一次调用后OPTIND的值保存在当前的回话里,而getopts是根据OPTIND来解析参数的,因为第二次调用stjob时,OPTIND已经有了值,就导致解析不正常了。所以为了保证解析正常,应该在解析前将OPTIND置零或者去掉这个变量。
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜