bash中的子串的变量扩展
时间:2010-04-05 来源:wing731
子串的变量扩展
模式匹配变量用来在串首或串尾截掉某一特定部分。最常见的用法是从路径头或尾删除路径名元素。
表达式 |
功能 |
${变量%模式} |
将变量值的尾部与模式进行最小匹配,并将匹配到的部分删除 |
${变量%%模式} |
将变量值的尾部与模式进行最大匹配,并将匹配到的部分删除 |
${变量#模式} |
将变量值的头部与模式进行最小匹配,并将匹配到的部分删除 |
${变量##模式} |
将变量值的头部与模式进行最大匹配,并将匹配到的部分删除 |
${#变量} |
替换为变量中的字符个数。如果是*或@,长度则是位置参量的个数 |
-
Example
- % 删除路径名,尾部包含模式/bin,后跟0个或多个字符的最小部分。即删除/bin。
[root@wingwu ~]# pathname="/usr/bin/local/bin"
[root@wingwu ~]# echo ${pathname%/bin*}
/usr/bin/local - %% 删除路径名,尾部包含模式/bin,后跟0个或多个字符的最大部分。即删除/bin/local/bin。
[root@wingwu ~]# echo ${pathname%%/bin*}
/usr - # 删除路径名,头部包含模式/home的最小部分。即/home被删除。
[root@wingwu ~]# pathname=/home/lilliput/jake/.bashrc
[root@wingwu ~]# echo ${pathname#/home}
/lilliput/jake/.bashrc - ## 删除路径名,头部包含0个或多个字符,直到并包含最后一个斜杆的最大部分。即删除路径变量中的/home/liliput/jake/。
[root@wingwu ~]# echo ${pathname##*/}
.bashrc - 变量中字符串的字符个数
[root@wingwu ~]# name="Ebenezer Scrooge"
[root@wingwu ~]# echo ${#name}
16
相关阅读 更多 +