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下的文件

你可能感兴趣的:(Linux中shell脚本编程)