歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> [shell]在函數中使用getopts

[shell]在函數中使用getopts

日期:2017/3/1 16:32:09   编辑:SHELL編程
[shell]在函數中使用getopts 以前在.bashrc中寫過一個函數,裡面使用了getopts, 但是奇怪的是,這個函數調用過一次後,就不能再次解析參數,後來經過查詢,發現是OPTIND變量的問題, 原代碼如下: www.2cto.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置零或者去掉這個變量。
Copyright © Linux教程網 All Rights Reserved