不飞则已,一飞冲天;不鸣则已,一鸣惊人。这篇文章主要讲述变量内容的删除和替换相关的知识,希望能为你提供帮助。
1、变量内容的删除:"
#"
"
%"
①删除内容
$variable#/*qt-3.3/bin:
例如:
# path=$PATH
# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# echo $path#/*qt-3.3/bin:<
======将qt-3.3删掉
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin$variable#/*qt-3.3/bin:
variable部分就是需要填写的变量名称,$variable#/*qt-3.3/bin:
"#"代表从变量内容的最前面开始向右删除,且仅删除最短的那个$variable#/*qt-3.3/bin:
"/*qt-3.3/bin:"代表要被删除的部分,由于"#"代表由前面开始删除,所以这里便由开始"/"写起,需要注意的是,我们还可以通过通配符"*"来替代0到无穷多个任意字符。
②删除前面所有的目录,仅保留最后一个目录
###删除最短的目录:
# echo $path#/*:
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
###删除前面所有的目录,仅保留最后一个目录:
# echo $path##/*:
/root/bin在PATH这个变量的内容中,每个目录都是以冒号":"隔开的,所以要从头删除掉目录就是介于斜线到冒号之间的数据。但是PATH中不只是一个冒号,所以:
# :符合替换文件的"最短的"那一个
## :符合替换文字的"最长的"那一个
【变量内容的删除和替换】③删除最后面的目录:使用" %"
####删除最后的那个目录,即从":"到bin为止的字符串
# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# echo $path%:*bin
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
####这个%代表由最后面开始向前删除####只保留第一个目录
# echo $path%%:*bin
/usr/lib64/qt-3.3/bin
####前面所有案例必须加上*,否则命令无效。
2、变量内容的替换:" 变量/old /new"
①将path的变量的sbin替换成大写SBIN:
# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# echo $path/sbin/SBIN
/usr/lib64/qt-3.3/bin:/usr/local/SBIN:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#####关键字在于那两个斜线,两个斜线中间的是旧字符串,后面是新字符串# echo $path//sbin/SBIN
/usr/lib64/qt-3.3/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/root/bin
#####如果是两条斜线,那么就变成所有符合的内容都会被替代。
3、总结:
变量设置方式 | 说明 |
---|---|
$变量#关键字 | 若变量内容从头开始的额数据符合" 关键字" ,则将符合的最短数据删除 |
$变量##关键字 | 若变量内容从头开始的数据符合" 关键字" ,则将符合的最长数据删除 |
$变量%关键字 | 若变量内容从尾向前的数据符合" 关键字" ,则将符合的最短数据删除 |
$变量%%关键字 | 若变量内容从尾向前的数据符合" 关键字" ,则将符合的最长数据删除 |
$变量/旧字符串/新字符串 | 若变量内容符合" 旧字符串" ,则将第一个旧字符串会被新字符串替换 |
$变量//旧字符串/新字符串 | 若变量内容符合" 旧字符串" ,则全部的旧字符串会被新字符串替换 |
推荐阅读
- 十款命令行工具
- ABeam Consulting也为这项活动提供了支持
- Docker容器管理命令
- 利用nginx+fancyindex美化目录索引
- 基于VMware Workstation构建Vagrant base box
- java高级用法之:JNA中的回调
- 干货 | 图标(ICON) 的 9 种设计原则
- Ansible自动化工具的实践
- Docker镜像管理