Shell子串_特殊变量_扩展变量
特殊shell扩展变量
变量的处理
#如果parameter变量值为空,返回word字符串,赋值给result变量
result=${parameter:-word}
#如果parameter变量为空,则word替代变量值,且返回其值
${parameter:=word}
#如果parameter变量为空,word当stderr输出,否则输出变量值(stderr是标准错误输出
#用于设置变量为空导致错误时,返回的错误信息
${parameter:?word}
#如果para变量为空,什么都不做,否则word返回
${parameter:+word}
举例
- :- 如果变量为空,就返回后面的字符信息,可通过变量接收
- := 如果变量为空,赋值给变量,并返回其值
- :?如果变量为空,主动抛出信息,并传入标准错误输出信息
- :+ 当变量为空什么都不做,否则就返回其值给接收者
[root@localhost sub_str]# echo $eg
[root@localhost sub_str]# result=${eg:-badvar}
[root@localhost sub_str]# echo $eg
[root@localhost sub_str]# echo $result
badvar
[root@localhost sub_str]#
#######################################
[root@localhost sub_str]# echo $eg
[root@localhost sub_str]# result=${eg:=hello}
[root@localhost sub_str]# echo $eg ;echo $result
hello
hello
[root@localhost sub_str]#
###########################################
[root@localhost sub_str]#
[root@localhost sub_str]# echo ${faf:?}
bash: faf: 参数为空或未设置
[root@localhost sub_str]# echo ${faf:?变量不存在}
bash: faf: 变量不存在
[root@localhost sub_str]#
################################
[root@localhost sub_str]# echo ${faf:+hehe}
[root@localhost sub_str]# faf=all
[root@localhost sub_str]# echo ${faf:+hehe}
hehe
[root@localhost sub_str]#
实际应用经典案例
数据备份,删除过期数据的脚本
#删除7天以上的过期数据
find 需要搜索的目录 -name 要搜索的文件名字 -type 文件类型 -mtime +7|xargs rm -f
##shell语法是否有bug
##希望删除某个文件夹的备份文件
#dir_path="/data/mysql_back_data/"
#find ${dir_path} -name '*.tar.gz' -type f -mtime +7|xargs rm -f
#如果有bug歧义或者变量赋值语句被注释,就会在当前目录,搜索,删除 ;会造成巨大问题
##变量扩展改进
find ${dir_path:=/data/mysql_back_data/} -name '*.tar.gz' -type f -mtime +7|xargs rm -f
分类:
shell实战1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!