码迷,mamicode.com
首页 > 系统相关 > 详细

shell的string operator

时间:2016-07-31 22:19:47      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

${varname:-word}

如果varname存在并且不为nil,那么返回varname的值,否则返回word。这个常用来在varname未定义时返回默认值

 

${varname:=word}

如果varname存在并且不为nil,那么返回varname的值,否则将varname的值设置为word并且返回该值。这个常用来对变量设置默认值

 

${varname:?message}

如果varname存在并且不为nil,那么返回varname的值,否则打印varname:message,并且中断脚本(只有在non-interactive shell下成立)

 

${varname:+word}

如果varname存在并且不为nil,返回word,否则返回nil

 

${varname:offset:length}

从offset开始,截取长度为length的子串,其中字符串的序号从0开始算,有以下几种特殊情况:

1 若不指定length,则一直截取到整个字符串末尾

2 若offset为负数,从字符串末尾开始往后数offset个字符,然后截取length个字符;如果不指定length,那么一直截取到整个字符串末尾,比如:

name=abcdef
${name: -3:2} 输出de
${name: -3} 输出def

这里需要注意的是,此时-与:之间有空格,目的是让shell区分${varname:-word}这种形式

3 如果varname是*或者@,那么就是从第offset个position parameter开始,截取length个,如果不指定length,那么就一直截取到最后一个position parameter

 

${varname#pattern}

从varname的开头开始匹配,然后删除最短的匹配项,将剩余的字符串返回

 

${varname##pattern}

从varname的开头开始匹配,然后删除最长的匹配项,将剩余的字符串返回

 

${varname%pattern}

从varname的末尾开始匹配,然后删除最短的匹配项,将剩余的字符串返回

 

${varnam%%pattern}

从varname的末尾开始匹配,然后删除最长的匹配项,将剩余的字符串返回

 

${varname/pattern/string}

将第一个最长的匹配项替换为string,若string为nil,则删除该匹配项

 

${varname//pattern/string}

将所有最长的匹配项替换为string,若string为nil,则删除该匹配项

 

在上面两种替换模式中,如果pattern以#开头,那么就是从varname开头进行匹配;如果varname为*或者@,那么替换就是依次对每一个position parameter进行。

shell的string operator

标签:

原文地址:http://www.cnblogs.com/chaoguo1234/p/5723981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!