变量内容的删除和替换

不飞则已,一飞冲天;不鸣则已,一鸣惊人。这篇文章主要讲述变量内容的删除和替换相关的知识,希望能为你提供帮助。
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、总结:
变量设置方式 说明
$变量#关键字 若变量内容从头开始的额数据符合" 关键字" ,则将符合的最短数据删除
$变量##关键字 若变量内容从头开始的数据符合" 关键字" ,则将符合的最长数据删除
$变量%关键字 若变量内容从尾向前的数据符合" 关键字" ,则将符合的最短数据删除
$变量%%关键字 若变量内容从尾向前的数据符合" 关键字" ,则将符合的最长数据删除
$变量/旧字符串/新字符串 若变量内容符合" 旧字符串" ,则将第一个旧字符串会被新字符串替换
$变量//旧字符串/新字符串 若变量内容符合" 旧字符串" ,则全部的旧字符串会被新字符串替换

    推荐阅读