变量的高级用法--${var}是我们在shell 脚本中最常用到的方法,其实${ }还有很多对变量的高级用法,我们使用这些方法可以给我们在变量引用时带来很大的方便。
目录
字符串处理
字符串切片
字符串变量赋值
变量间接引用
一、字符串的处理
${var#*pattern} # 从左到右,删除字符串开头至第一次出现的pattern部分
${var##*pattern} # 从左到右,删除字符串开头至最后出现pattern部分
${var%pattern*} # 从右到左,删除字符串结尾至第一次出现pattern的部分
${var%%pattern*} # 从右到左,删除字符串结尾至最后一次出现pattern的部分
${var/pattern/substr} # 查找var存储的字符串中,第一个被pattern匹配到的字符替换为substr
${var//pattern/substr} # 查找var存储的字符串中,所有被pattern匹配到的字符替换为substr
${var/#pattern/substr} # 查找var存储的字符串中,开头被pattern匹配到的字符替换为substr
${var/%pattern/substr} # 查找var存储的字符串中,结尾被pattern匹配到的字符替换为substr
${var/pattern/} # 查找var存储的字符串中,删除第一次被pattern匹配到的字符
${var//pattern/} # 查找var存储的字符串中,删除所有被pattern匹配到的字符
${var/#pattern/} # 查找var存储的字符串中,删除开头被pattern匹配到的字符
${var/%pattern/} # 查找var存储的字符串中,删除结尾被pattern匹配到的字符
${var^^} # 将var存储的字符串中的所有小写替换为大写
${var,,} # 将var存储的字符串中的所有大写替换为小写,注意是英文逗号
二、字符串切片
${#var} # 引用字符串的长度
${var:offset} # 从左到右,引用字符串从第offset(不包括offset)个字符开始到最后的部分
${var:offset:number} # 从左到右,引用字符串从第offset(不包括offset)个字符开始,长度为number的部分
${var: -length} # 取字符串最右侧length个字符,注意-length前有一个空格
${var: -length:number} # 先从右到左取length个字符,在从前边得到的字符中取长度为number的部分,同样的注意length前的空格
三、字符串变量赋值
${var:-value} # var为空或未设置,则返回value;有值则返回var的值
${var:+value} # var为空或未设置,则返回空值;有值则返回value
${var:=value} # var为空或未设置,则返回value并赋值给value;有值则返回var的值
${var:?error_info} # var为空或未设置,则返回error_info的信息;有值则返回var的值
四、变量间接引用
如果var1=var2,var2=value,直接用变量var1引用value,这叫做变量的间接引用。
方法一:eval tmpvar=\$$var1 ;echo ${tmpvar}
方法二:引用${!var1}