分类: 系统运维
2011-07-07 16:38:04
{变量#*/} 去掉变量里从左边(#在$号的左边)从左边算起到第一个/(包括/)的字符串
#在$号的左边,顺序是从左边算起,拿掉的是指定的字符/左边的字符,一个#号是从左往右算起第一个指定的字符/,两个##是从左往右算最后一个你指定的字符/
aa=aas/opt/foundir/csmail/mta/aas.test.bon.txt
echo $aa
aas/opt/foundir/csmail/mta/aas.test.bon.txt
[root@localhost sbin]# echo $aa && echo ${aa#*/}
aas/opt/foundir/csmail/mta/aas.test.bon.txt
opt/foundir/csmail/mta/aas.test.bon.txt (aas/去掉了)
{变量##*/} 去掉变量 从左边算起 最后一个/.包括最后一个/的字符串
[root@localhost sbin]# echo $aa && echo ${aa##*/}
aas/opt/foundir/csmail/mta/aas.test.bon.txt
aas.test.bon.txt (变量里最后一个/前面的字符串都去掉了,包括最后一个/)
其中#*,##*是替换参数,后面的/是可以自定的,
[root@localhost sbin]# echo $aa && echo ${aa##*a}
aas/opt/foundir/csmail/mta/aas.test.bon.txt
s.test.bon.txt
也可以换成其它的字符,这里去掉的是左边的字符,和你指定的字符
[root@localhost sbin]# echo $aa && echo ${aa}
aas/opt/foundir/csmail/mta/aas.test.bon.txt
aas/opt/foundir/csmail/mta/aas.test.bon.txt
前后是一样的
%在$号的右边,顺序是从右边算起,拿掉的是指定的字符/右边的字符,一个百分号是从右往左算起第一个指定的字符/,两个%%是从右往左算最后一个你指定的字符/
组合方式:${aa%/*},${aa%%/*} >>>testing
[root@localhost sbin]# echo $aa && echo ${aa%/*} && echo ${aa%%/*}
aas/opt/foundir/csmail/mta/aas.test.bon.txt
aas/opt/foundir/csmail/mta
aas
[root@localhost sbin]# echo $aa && echo ${aa%.*} && echo ${aa%%.*}
aas/opt/foundir/csmail/mta/aas.test.bon.txt
aas/opt/foundir/csmail/mta/aas.test.bon
aas/opt/foundir/csmail/mta/aas
测试完成
[root@localhost sbin]# echo $aa && echo ${aa/.txt/.cpp}
aas/opt/foundir/csmail/mta/aas.test.bon.txt.txt.txt.txt
aas/opt/foundir/csmail/mta/aas.test.bon.cpp.txt.txt.txt
${aa/.txt/.cpp}只替换了一个txt
[root@localhost sbin]# echo $aa && echo ${aa//.txt/.cpp}
aas/opt/foundir/csmail/mta/aas.test.bon.txt.txt.txt.txt
aas/opt/foundir/csmail/mta/aas.test.bon.cpp.cpp.cpp.cpp
后面使用的两个//,这样变成了替换所有的txt
[root@localhost sbin]# echo $aa && echo ${aa/%.txt/.cpp}
aas/opt/foundir/csmail/mta/aas.test.bon.txt.txt.txt.txt
aas/opt/foundir/csmail/mta/aas.test.bon.txt.txt.txt.cpp
这句是替换的最后一个.txt.,,默认是第一个.txt
[root@localhost sbin]# unset aa