首页 > linux > shell 字符串操作符 替换操作符简介
2009六月2

shell 字符串操作符 替换操作符简介

字符串操作总是在编程语言中占有重要的一席,而且是最重要的一环,今天就来讲一讲shell的字符串函数,替换操作符。

其实,只是简介,毕竟,如果不使用的话,这些东西是记不住的。

一会儿就和大伙一起看看${varname:-word},${varname:=word},${varname:?message},${varname:+word},${varname:offset},${varname:offset:length}这些替换操作符。

好几天没写shell脚本的日志了。呵呵,没办法,懒啊。

因为总感觉这几节不好写,于是总也没写,汗。。

没办法,用超人的毅力,来完成这节,呵呵。。

并且,我也坦承,这几个例子我并没有真正去执行,因为我看的小说是CHM的,不爱在LINUX下面看。

但是放心,明天我会依次用这几个函数去完成一个书中的例子,到时,如果有与本节代码不一致的地方,我会改过来。

不过,我相信,凭我的理解,和书中给的例子,我这些应该不会错的吧。

${varname:-word}
  • 说明:如果varname存在且非null,返回其值,否则返回word
  • 意图:如果变量未定义,返回一个默认值
  • 例子:如果host未定义,则${host:-”xiaoxiaozi”}为xiaoxiaozi
${varname:=word}
  • 说明:如果varname存在且非null,返回其值,否则将其设置为word,然后返回其值。位置参数和特殊参数不能这样设置!
  • 意图:如果变量未定义,为变量设初始值,并返回
  • 例子:如果host未定义,则${host:=”xiaoxiaozi”}设置host为xiaoxiaozi,并返回
${varname:?message}
  • 说明:如果varname存在且非null,返回其值,否则打印varname:后跟信息message,并退出当前命令或脚本(非交互式shell)。省略message则产生默认信息:parameter null or not set
  • 意图:捕获未定义变量导致的错误,即如果变量未定义的话,就输出一个错误信息
  • 例子:如果host未定义,则${host:?”host is undefined!”}为则打印”host:host is undefined!”并退出
${varname:+word}
  • 说明:如果varname存在且非null,返回word,否则返回null
  • 意图:测试一个变量是否存在,如果存在,返回word,不存在返回null
  • 例子:如果host定义,则${host:+1}返回1(true)
${varname:offset},${varname:offset:length}
  • 说明:截取字符串,从offset(起始位置)截取至length,如果length省略,则截取至末尾。在$varname的起始字符位置为0。如果offset小于0,则从$varname的末尾向前截取。如果varname为@,length则为从参数offset开始的位置参数的数目
  • 意图:返回子字符串
  • 例子:如果host值为www.xiaoxiaozi.com,则${host:3:10}为xiaoxiaozi

注意:除了最后一个操作符中的冒号(:),其他的冒号都是可选的。

如果冒号省略的话,在说明里的“存在且非null”改为“存在”,即冒号(:)操作符只测试存在性。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/02/716/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

6 Responses to “shell 字符串操作符 替换操作符简介”

  1. #1 粥小卜 回复 | 引用 Post:2009-06-02 23:37

    好专业啊 坐个沙发贝

    [回复]

  2. #2 卢松松 回复 | 引用 Post:2009-06-03 11:57

    很不错啊,你现在是越来越专业了

    [回复]

  3. #3 simaopig 回复 | 引用 Post:2009-06-03 12:03

    @卢松松
    呵,胡乱写写,帮助自己记忆而已,搏君一笑。 :grin:

    [回复]

  4. #4 小小 回复 | 引用 Post:2009-06-03 13:10

    偶只对“shell ”这个词有些印象 :arrow:

    [回复]

  5. #5 粥小卜 回复 | 引用 Post:2009-06-03 14:13

    @小小
    偶也是 :razz:

    [回复]

  6. #6 simaopig 回复 | 引用 Post:2009-06-03 14:17

    @小小
    呵,有印象就比没有印象要好。。

    @粥小卜
    呃,也完全可以理解为“贝壳”。呵呵。

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)