第七章 变量替换

xiaoxiao2021-02-28  84

1、变量替换

专门用来处理命令行的选项和参数,其语法如下:

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值。

2、通配符

wildcard     decription

*                 匹配0个或多个任意的字符

?                匹配一个任意的字符

[]                匹配指定范围中任意一个字符

eg:

(1)、[abcd1234]  指定要匹配的

(2)、[A-Z]    // 所有大写

(3)、[a-zA-Z0-9]   //所有英文字母加数字

(4)、在一个范围前加符号!或^表示不包含这个范围的字符。

3、命令替换:

命令替换的格式为:

$(command)   or

`command`   // 备注:如需要嵌套内层的``符号要使用反斜杠\进行转义

eg:  ` expr  \`data + %Y\` +1`

4、算术运算替换

4.1 执行算术运算

$((expression))

eg: $(( (365-DAY)/7 ))  //DAY=3  DAY 不需要加$符号

4.2 说明

(1)、$(())只能进行整数运算,结果中的小数部分都会被忽略。

(2)、let命令算术表达式不能包含任何空格。

(备注:操作符包括 / ,*,-,+,%,(),++,-,+=,-=等).

转载请注明原文地址: https://www.6miu.com/read-61893.html

最新回复(0)