变量内容的删除和替换
Posted 小小超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量内容的删除和替换相关的知识,希望对你有一定的参考价值。
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、总结:
变量设置方式 | 说明 |
---|---|
$变量#关键字 | 若变量内容从头开始的额数据符合"关键字",则将符合的最短数据删除 |
$变量##关键字 | 若变量内容从头开始的数据符合"关键字",则将符合的最长数据删除 |
$变量%关键字 | 若变量内容从尾向前的数据符合"关键字",则将符合的最短数据删除 |
$变量%%关键字 | 若变量内容从尾向前的数据符合"关键字",则将符合的最长数据删除 |
$变量/旧字符串/新字符串 | 若变量内容符合"旧字符串",则将第一个旧字符串会被新字符串替换 |
$变量//旧字符串/新字符串 | 若变量内容符合"旧字符串",则全部的旧字符串会被新字符串替换 |
以上是关于变量内容的删除和替换的主要内容,如果未能解决你的问题,请参考以下文章