歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> unix shell學習之getopts解析命令行參數

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

日期:2017/3/1 14:02:19   编辑:SHELL編程
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