作者:liyongchao89
	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
	 
	就可以看到運行命令后解析參數所得到的結果
新聞熱點
疑難解答