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下的文件
版权声明:本文为molugy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。