微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell脚本变量替换

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。