1、如果变量字符前面使用感叹号,可以实现对变量的间接引用,而不是返回变量本身的值,但只能实现一层间接引用
[root@mao_aliyunserver ~]# god=mao [root@mao_aliyunserver ~]# people=god [root@mao_aliyunserver ~]# echo ${people} god [root@mao_aliyunserver ~]# echo ${!people} mao
2、变量替换可以测试变量是否存在及是否为空,并根据不同的语法格式进行不同的操作
# ${变量名:-默认值} -> 如果变量未定义或为空,则返回默认值,否则返回变量值 [root@mao_aliyunserver ~]# echo ${a} [root@mao_aliyunserver ~]# echo ${a:-mao} mao [root@mao_aliyunserver ~]# echo ${a} # ${变量名:=默认值} -> 如果变量未定义或为空,则返回默认值,并且会把默认值赋给变量,否则返回变量值 [root@mao_aliyunserver ~]# echo ${b} [root@mao_aliyunserver ~]# echo ${b:=mao} mao [root@mao_aliyunserver ~]# echo ${b} mao # ${变量名:?错误信息} -> 如果变量未定义或为空,则通过标准错误返回错误信息,否则返回变量值 [root@mao_aliyunserver ~]# echo ${c} [root@mao_aliyunserver ~]# echo ${c:?变量值c为空或没有赋值} -bash: c: 变量值c为空或没有赋值 [root@mao_aliyunserver ~]# echo ${c} # ${变量名:+默认值} -> 如果变量未定义或为空,则返回空,否则返回默认值 [root@mao_aliyunserver ~]# echo ${d} [root@mao_aliyunserver ~]# echo ${d:+mao} [root@mao_aliyunserver ~]# echo ${d} [root@mao_aliyunserver ~]# d=pipi [root@mao_aliyunserver ~]# echo ${d:+mao} mao
3、变量替换还可以完成字符串切割及掐头去尾功能,详见以下博客
shell脚本变量替换
4、变量替换还可以帮助我们查找变量、统计变量内容和对变量内容进行替换操作
# ${变量名^^匹配字符}: 将变量值中的匹配字符替换为大写,不写匹配字符就替换所有字符,只写一个^只替换第一个 [root@mao_aliyunserver ~]# word=myPDD [root@mao_aliyunserver ~]# echo ${word^^} MYPDD [root@mao_aliyunserver ~]# echo ${word^} MyPDD [root@mao_aliyunserver ~]# echo ${word^y} myPDD # ${变量名,,匹配字符}: 将变量值中的匹配字符替换为小写,不写匹配字符就替换所有字符,只写一个,只替换第一个 [root@mao_aliyunserver ~]# echo ${word,,} mypdd [root@mao_aliyunserver ~]# echo ${word} myPDD