注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

2011年9月9日  

2010-10-18 11:05:11|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原文地址:http://hi.baidu.com/zhlg_hzh/blog/item/7b67b9dbd4b15b6cd1164e67.html


${expression}一共有9种使用方法。
${parameter:-word}
${parameter:=word}
${parameter:?word}
${parameter:+word}
上面4种可以用来进行缺省值的替换


${#parameter}
上面这种可以获得字符串的长度


${parameter%word} 最小限度从后面截取word
${parameter%%word} 最大限度从后面截取word
${parameter#word} 最小限度从前面截取word
${parameter##word} 最大限度从前面截取word
上面4个就是用来截取字符串的方法了。

第 二种方法${varible:n1:n2}:

截取变量variblen1开 始n2长度的字符串可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

有了着以上几种用法就不必使用cut命令来截取字符串了。
在shell里面使用外部命令会降低shell的执行效率。特别是在循环的时候。

PS:网上拷贝的另外一篇文章

#!/bin/bash

##########################################
#
#   演示bash中操作字符串的操作
#
#   后面是输出结果
#
##########################################

str="abc123abcABC"
#    |-|
#    |-------|

#计算字符串的长度
echo ${#str}    #12

#位置参数有关操作
echo ${#*}      #位置参数的个数
echo ${#@}      #位置参数的个数和上面的效果一样
echo $*         #把所有的位置参数作为一个字符串输出
echo $@         #效果同上
#字串截取
#
#    ${string#substring}
#         从$string的左边第一个字符截掉第一个匹配的$substring
#    ${string##substring}
#         从$string的左边第一个字符截掉最后一个个匹配的$substring
#
#从左边开始
echo ${str#a*c} #a到c的最短匹配
echo ${str##a*c} #a到c的最长匹配

#从右边开始
echo ${str%a*C}     #从右边的最后一个字符开始寻找a到B的最短匹配
echo ${str%%a*B}    #从右边最后一个字符开始寻找a到B的最长匹配
#这里找不到模式

#==取子串==
#   ${string:position}
#   ${string:positon:length}
#
echo ${str:2}       #从第2个位置开始提取字符串的值
echo ${str:2:3}     #从第2个位置开始提取长度为3个字符的值
#反向提取子串
echo ${str:(-2)}        #从反向的第2个位置开始提取字符串
echo ${str:(-2):6}      #从反向的第2个字符的位置开始提取长度为6个字符的串(:(不可能把)
#总共的字符长度只有2个怎么提取6个呢呵呵
echo ${str:(-6):3}      #6个中提出3个总可以了把

#位置参数的提取

echo ${*:2}         #从第二个位置参数开始提取后面所有位置参数的值
echo ${*:2:3}           #从第二个位置参数开始提取3个位置参数的值

#=子串替换=
# ${string/substring/replacement}
#   使用$replacement来替换第一个匹配的$substring.
# ${string//substring/replacement}
#   使用$replacement来替换所有匹配的$substring.
#
# ${string/#substring/replacement}
#   如果$substring匹配$string的开头部分,那么就用$replacement来替换$substring.
# ${string/%substring/replacement}
#   如果$substring匹配$string的结尾部分,那么就用$replacement来替换$substring.
#
str1="123abcABCab12"

echo ${str1/12/hover}   #仅仅替换了第一个
echo ${str1//12/hover} #替换了所有的

echo ${str1/#12/hover} # 从头开始匹配12,如果找到做替换
echo ${str1/%12/hover} # 从尾开始匹配12,如果找到做替换

  评论这张
 
阅读(129)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017