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
posted @   翻滚的小井蛙  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示