zoukankan      html  css  js  c++  java
  • Shell参数展开

    参数展开(parameter expansion)是shell提供变量值在程序中使用的过程。

    展开运算符 包括替换运算符和模式匹配运算符

    替换运算符

    运算符 替换说明 记忆
    ${varname:-word} 若varname存在且非null,则返回其值;否则返回word。 空则返回word
    ${varname:=word} 若varname存在且非null,则返回其值;否则,设置varname的值为word,并返回其值。改变变量的值。 空则返回word,并改变变量值
    ${varname:?message} 若varname存在且非null,则返回它的值;否则,显示varname: message,并退出当前的命令或脚本。省略message会出现默认信息parameter null or not set。 空则显示警告,并退出。
    ${varname:+word} 若varname存在且非null,则返回word;否则,返回null。 非空返回word,空则返回null。

    示例:

    $ echo ${varname}

    $ echo ${varname:-var1}

    var1

    $ echo ${varname:+var1}


    $ echo ${varname:=var2}
    var2

    $ echo ${varname}
    var2

    $ echo ${varname:+var1}
    var1

    $ echo ${varname}
    var2

    $ echo ${varname:?warning1}
    var2 

    $ varname=

    $ echo ${varname}

    $ echo ${varname:+var5}


    $ echo ${varname}


    $ echo ${varname:?warning2}
    -bash: varname: warning2

     

    模式匹配运算符

    运算符  替换 记忆
    ${variable#pattern} 如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下的部分。 删除开头最短(一个#)部分
    ${variable##pattern} 如果模式匹配于变量值的开关处,则删除匹配的最长部分,并返回剩下的部分。 删除开头最长(两个#)部分
    ${variable%pattern} 如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并返回剩下部分。 删除结尾最短(一个%)部分
    ${variable%%pattern} 如果模式匹配于变量值的结尾处,则删除匹配的最长部分,并返回剩下部分。 删除结尾最长(两个%)部分

    示例:

    $ export myvar=/home/merlin/myfile.log.tail

    $ echo ${myvar}
    /home/merlin/myfile.log.tail

    $ echo ${myvar#/*/}
    merlin/myfile.log.tail

    $ echo ${myvar##/*/}
    myfile.log.tail

    $ echo ${myvar%.*}
    /home/merlin/myfile.log

    $ echo ${myvar%%.*}
    /home/merlin/myfile

  • 相关阅读:
    webService客户端搭建(三)
    webService服务器端搭建(二)
    electron 编译 sqlite3避坑指南---尾部链接有已经编译成功的sqlite3
    解决网页中Waiting (TTFB)数据加载过慢的问题
    Node-sqlite3多字段插入数据问题
    win上使用nvm管理node版本
    centos系统设置局域网静态IP
    将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table
    win上配置nginx
    Nodejs解决所有跨域请求
  • 原文地址:https://www.cnblogs.com/merlindu/p/6974162.html
Copyright © 2011-2022 走看看