shell脚本之子串及特殊变量扩展

本文深入探讨了Shell脚本中变量的高级用法,包括子串操作、特殊变量扩展和条件输出。通过实例演示了如何利用这些特性进行更复杂的字符串处理和条件判断,适合于想要提高Shell脚本编写技能的读者。

shell脚本之子串及特殊变量


表达式说明
${parameter}返回变量$parameter的内容
${#parameter}返回变量$parameter内容的长度(按字符),也适用于特殊变量
${parameter:offset}在变量{$parameter}中,从位置offset之后开始提取子串到结尾
${parameter:offset:length}在变量{$parameter}中,从位置offset之后开始提取长度为length的子串
${parameter#word}从变量{$parameter}开头开始删除最短匹配的word子串
${parameter##word}从变量{$parameter}开头开始删除最长匹配的word子串
${parameter%word}从变量{$parameter}结尾开始删除最短匹配的word子串
${parameter%%word}从变量{$parameter}结尾开始删除最长匹配的word子串
${parameter//pattern/string}使用string代替所用匹配的pattern
${{parameter/pattern/string}使用string代替第一个匹配的pattern

字符串的特殊变量扩展


表达式说明
echo ${parameter:-word}如果parameter为空,则输出word,parameter本身没有发生变化;如果不为空输出parameter的值
echo ${parameter:=word}如果parameter为空,则输出word,parameter已经赋予word的值;如果不为空输出parameter的值
echo ${parameter:?word}如果parameter为空,则输出word,此时word将是错误输出的提示,echo $? 返回值为1;如果不为空输出parameter的值
echo ${parameter:+word}如果parameter为空,则输出空,如果不为空输出word,parameter本身没有发生变化

康康实例

[root@backup ~]# echo ${a}

[root@backup ~]# echo ${a:-molu}
molu
[root@backup ~]# echo ${a:=molu}
molu
[root@backup ~]# echo ${a:+molu}
molu
[root@backup ~]# echo ${a:?molu}
molu

例题:删除7天的过期备份数据
如果忘记了定义path变量,又不希望path值为空,就可以定义/tmp代替path空值的返回值

[root@backup ~]# vi del.sh
[root@backup ~]# sh -x del.sh
+ xargs rm -f
+ find /tmp -name '*.tar.gz' -type f -mtime +7
[root@backup ~]# cat del.sh
#!/bin/bash
find ${path-/tmp} -name "*.tar.gz" -type f -mtime +7|xargs rm -f   #执行时,系统会自动删除/tmp下的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值