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

  • 相关阅读:
    vue截取video视频中的某一帧
    sm加密前端解析--JS实现国密算法SM2加密
    前端js解析识别图片二维码
    如果让你来设计一个分页功能, 你会怎么设计? 前后端如何交互?
    jQuery事件
    如何实现文件上传?说说你的思路
    实现JWT鉴权机制
    对中间件概念的理解,如何封装 node 中间件
    Node 文件查找的优先级以及 Require 方法的文件查找策略
    angularjs input使用ng-model双向绑定无效bug解决
  • 原文地址:https://www.cnblogs.com/chaoguo1234/p/5723981.html
Copyright © 2011-2022 走看看