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