日期:2014-05-16  浏览次数:20769 次

基于linux的附加变量设置功能
在${variable}的使用方法中,我们还可以修改变量,只要加上一些字符标志,后面再接着使用比较字符串,就能修改变量的内容了。

eg:
1、设置变量hello
[root@linux ~]#hello="/hi/hello/nihaoya/nihaoya.txt"
[root@linux ~]#echo ${hello}
/hi/hello/nihaoya/nihaoya.txt

2、在hello变量中,从最前面开始比较,若开头为/,则删除两个/之间所有的数据,即/*/
[root@linux ~]#echo ${hello##/*/}
nihaoya.txt--------删除了="/hi/hello/nihaoya/
[root@linux ~]#echo ${hello#/*/}
hello/nihaoya/nihaoya.txt--------仅删除/hi/
PS:从这两个例子可以看出,变量名后面如果有两个##,表示在##后面的字符串取“最长的”那一段;如果仅有一个#,表示取“最小的”那一段。

3、在hello变量中,如果从最后面开始比较,那会是怎样一种情况呢。。。。。。
[root@linux ~]#echo ${hello%%/*/}
/hi/hello/nihaoya/nihaoya.txt-----一个都没有删除
[root@linux ~]#echo ${hello%%/*}
              --------------------都被删除了
[root@linux ~]#echo ${hello%/*}
/hi/hello/nihaoya-----------------只删除/nihaoya.txt这一部分
PS:好了,我们现在知道%的用法了,%比较的是“最后面那个字符”的意思,所以,第一个方式肯定不对,因为hello变量最后面的内容是t,而不是/。对于%%/*则是删除“最长的那个/*",而"%/*"则是“最短的那个”。

4、在hello变量中,将nihaoya替换成NIHAO
[root@linux ~]#echo ${hello/nihaoya/NIHAO}
/hi/hello/NIHAO/nihaoya.txt
[root@linux ~]#echo ${hello//nihaoya/NIHAO}
/hi/hello/NIHAO/NIHAO.txt
PS:如果变量后面接/,表示后面是进行“替换”工作,而且仅替换“第一个”匹配的,如果是//,则表示替换匹配字符串。