专门用来处理命令行的选项和参数,其语法如下:
getopts optstring name
备注:optstring 包含了希望被处理选项字符。
如果某一个字符后有(:),则其后需要指定参数。
eg: while getopts f:e:p: OPTION
do
case "$OPTION" in
f) TARGET_FILE="$OPTARG" ;;
e) EDITOR="$OPTARG";;
p)PAGER="$OPTARG";;
\?) help ;;
esac
done
(备注:如果对应选项需要参数,它会把对应参数放到变量OPTARG中;
getopts 每次成功处理完一个选项后,都会设置退出状态为0,也即为真,处理完后,getopts会以大于0的状态退出,即shell脚本中的假
while 0 //真 会一直循环
while 1 // 假 结束循环
)
说明:
(1)、case中“\?” 此处?对shell有特殊含义,需要使用\?进行转义,使特殊字符变为普通字符。
(2)、变量替换
${var:-value} //如果变量var没有被定义或为空,就使用默认值value代替var值,但不会改变var值。
wildcard decription
* 匹配0个或多个任意的字符
? 匹配一个任意的字符
[] 匹配指定范围中任意一个字符
eg:
(1)、[abcd1234] 指定要匹配的
(2)、[A-Z] // 所有大写
(3)、[a-zA-Z0-9] //所有英文字母加数字
(4)、在一个范围前加符号!或^表示不包含这个范围的字符。
命令替换的格式为:
$(command) or
`command` // 备注:如需要嵌套内层的``符号要使用反斜杠\进行转义
eg: ` expr \`data + %Y\` +1`
4.1 执行算术运算
$((expression))
eg: $(( (365-DAY)/7 )) //DAY=3 DAY 不需要加$符号
4.2 说明
(1)、$(())只能进行整数运算,结果中的小数部分都会被忽略。
(2)、let命令算术表达式不能包含任何空格。
(备注:操作符包括 / ,*,-,+,%,(),++,-,+=,-=等).