zoukankan      html  css  js  c++  java
  • shell的string operator

    ${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进行。

  • 相关阅读:
    原生AJAX基础讲解及兼容处理
    JS子元素oumouseover触发父元素onmouseout
    IE6常见bug
    让IE6支持position:fixed的方法,CSS expression与JavaScript eval讲解
    Alpha通道
    网络游戏开发前的pixel像素画习作
    网络游戏开发其一(游戏美工)
    周内琐记
    地图重置与各项绘图优化
    四足机器人搭建尝试
  • 原文地址:https://www.cnblogs.com/chaoguo1234/p/5723981.html
Copyright © 2011-2022 走看看