Shell參數選項解析


兩種shell選項參數解析工具

getopts/getopt

原理

  • test.sh
#!/bin/bash

while [[ $# -ge 1 ]]; do
	case $1 in
		-a|--aa )
			A=$2
			echo "經過a"
			shift 2
			;;
		-b|--bb )
			B=$2
			echo "經過b"
			shift 2
			;;
		-c|--cc )
			C="true"
			echo "經過c"
			shift
			;;
		* )
			echo "經過*:$1"
			shift	
			;;
	esac
done
echo "A = $A"
echo "B = $B"
echo "C = $C"
  • 執行:sh test.sh --bb bbb -c -d -a aaa
經過b
經過c
經過*:-d
經過a
A = aaa
B = bbb
C = true
  • $# -ge 1:參數個數大於等於1

  • case esac語句

    • ;;:與其他語言中的break,但是此時不能省略貫穿后面,語法報錯
    • *)*表示通配符,相當於其他語言的default未匹配項
  • shfit:位置參數左移命令

    • 例子:shift 3表示原來的$4現在變成$1,原來的$5現在變成$2,原來的$1$2$3丟棄,$0不移動,$#參數個數會減3。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM