歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

unix shell學習之getopts解析命令行參數

unix shell學習之getopts解析命令行參數   getopts命令內置於shell中,可以獲取由單個字符所指定的有效命令行參數,單個字符有一個‘ - ’號或‘ + ’號。 簡單的說,比如運行命令: iptables -t nat -A POSTROUTING -p tcp -o eth0 -s 192.168.2.0/24 -j SNAT --to public_ip 它實現了內網ip轉換成公網ip訪問外網的功能,但是這麼多的參數怎麼解析的呢,getopts就是實現像這種參數的解析。 所以getopts是一個非常實用的工具,在你編寫腳本時,能夠很方便的幫助你解析命令行參數,但是它具體是怎麼解析的呢, 如腳本提供命令行參數: -s 5 -m 10 -d 2 -p my_shell  解析時使用 getopts :s:m:h:d:p  這表明對於指定的項 s、m、d、p等如果在每個開關前加入“:”表示 這個開關項需要一個參數。 具體見代碼my_shell.sh 它實現了參數:天 時 分 秒 等全部轉換成秒的功能如下: 點擊(此處)折疊或打開 SECS=0 MINUTES=0 HOURS=0 DAYS=0 PROCESS=0 while getopts :s:m:h:d:p TIMED 2>/dev/null do         case $TIMED in         s) SECS=$OPTARG            ;;         m) ((MINUTES=$OPTARG*60))            ;;         h) ((HOURS=$OPTARG*3600))            ;;         d) ((DAYS=$OPTARG*86400))            ;;         p) PROCESS=$OPTARG            ;;         \?) usage            exit;           ;;         esac done ((TOTALSECS=$SECS+$MINUTES+$HOURS+$DAYS)) echo "total seconds:$TOTALSECS"   此時 運行命令:bash my_shell.sh -s 20 -m 3 -h 5 -d 8 -p my_shell 就可以看到運行命令後解析參數所得到的結果
Copyright © Linux教程網 All Rights Reserved