[size=medium]在${variable}的使用方法中,我们还可以修改变量,只要加上一些字符标志,后面再接着使用比较字符串,就能修改变量的内容了。
eg:
1、设置变量hello
#hello="/hi/hello/nihaoya/nihaoya.txt"
#echo ${hello}
/hi/hello/nihaoya/nihaoya.txt
2、在hello变量中,从最前面开始比较,若开头为/,则删除两个/之间所有的数据,即/*/
#echo ${hello##/*/}
nihaoya.txt--------删除了="/hi/hello/nihaoya/
#echo ${hello#/*/}
hello/nihaoya/nihaoya.txt--------仅删除/hi/
PS:从这两个例子可以看出,变量名后面如果有两个##,表示在##后面的字符串取“最长的”那一段;如果仅有一个#,表示取“最小的”那一段。
3、在hello变量中,如果从最后面开始比较,那会是怎样一种情况呢。。。。。。
#echo ${hello%%/*/}
/hi/hello/nihaoya/nihaoya.txt-----一个都没有删除
#echo ${hello%%/*}
--------------------都被删除了
#echo ${hello%/*}
/hi/hello/nihaoya-----------------只删除/nihaoya.txt这一部分
PS:好了,我们现在知道%的用法了,%比较的是“最后面那个字符”的意思,所以,第一个方式肯定不对,因为hello变量最后面的内容是t,而不是/。对于%%/*则是删除“最长的那个/*",而"%/*"则是“最短的那个”。
4、在hello变量中,将nihaoya替换成NIHAO
#echo ${hello/nihaoya/NIHAO}
/hi/hello/NIHAO/nihaoya.txt
#echo ${hello//nihaoya/NIHAO}
/hi/hello/NIHAO/NIHAO.txt
PS:如果变量后面接/,表示后面是进行“替换”工作,而且仅替换“第一个”匹配的,如果是//,则表示替换匹配字符串。[/size]
eg:
1、设置变量hello
#hello="/hi/hello/nihaoya/nihaoya.txt"
#echo ${hello}
/hi/hello/nihaoya/nihaoya.txt
2、在hello变量中,从最前面开始比较,若开头为/,则删除两个/之间所有的数据,即/*/
#echo ${hello##/*/}
nihaoya.txt--------删除了="/hi/hello/nihaoya/
#echo ${hello#/*/}
hello/nihaoya/nihaoya.txt--------仅删除/hi/
PS:从这两个例子可以看出,变量名后面如果有两个##,表示在##后面的字符串取“最长的”那一段;如果仅有一个#,表示取“最小的”那一段。
3、在hello变量中,如果从最后面开始比较,那会是怎样一种情况呢。。。。。。
#echo ${hello%%/*/}
/hi/hello/nihaoya/nihaoya.txt-----一个都没有删除
#echo ${hello%%/*}
--------------------都被删除了
#echo ${hello%/*}
/hi/hello/nihaoya-----------------只删除/nihaoya.txt这一部分
PS:好了,我们现在知道%的用法了,%比较的是“最后面那个字符”的意思,所以,第一个方式肯定不对,因为hello变量最后面的内容是t,而不是/。对于%%/*则是删除“最长的那个/*",而"%/*"则是“最短的那个”。
4、在hello变量中,将nihaoya替换成NIHAO
#echo ${hello/nihaoya/NIHAO}
/hi/hello/NIHAO/nihaoya.txt
#echo ${hello//nihaoya/NIHAO}
/hi/hello/NIHAO/NIHAO.txt
PS:如果变量后面接/,表示后面是进行“替换”工作,而且仅替换“第一个”匹配的,如果是//,则表示替换匹配字符串。[/size]