zoukankan      html  css  js  c++  java
  • Shell 特殊的变量替换

    特殊的变量替换
    ${var}:同$var
    ${var:-value} var未设置或值为null,使用value值作为替换,否则使用var
    ${var:=value} 与${var:-value}一样,只是使用value的同时会赋值给var

    unset var1 
    echo ${var1:="var1 nuset or null one "}
    echo ${var1:="var1 nuset or null two"} #输出one,因为var1已不为null,使用var1
    echo ${var2:-"var2 nuset or null one "}
    echo ${var2:-"var2 nuset or null two "} #输出two,var仍为空

    ${var:+value} var未设置或为null,使用var(即使用null),否则使用value

    ${var:?value} 如果var被设置,使用var,否则,输出value作为错误信息,省略value输出默认错误信息(行号等),终止shell执行,并返回非0
    出口状态,var值不变,可以用于检查参数

    data=${1:?"no arg"} #执行时不带参数会终止下面的echo并显示value作为错误信息
    echo $data

    ${#var} 字符串长度,是数字就是数字长度,${#array}是数组第一个元素的长度.例外情况:${#*}和${#@}是位置参数个数,${#array[*]}和 

    ${#array[@]}是数组元素个数

    ${var#Pattern},${var##Pattern} 从$var变量值前面除去与给定模式匹配的最短或最长部分子串
    ${var%Pattern},${var%%Pattern} 从$var变量值后面除去与给定模式匹配的最短或最长部分子串,${var%Pattern}可用于抽取路径名的目录部分

    var=file.c
    echo ${var%.c} #输出file
  • 相关阅读:
    深入理解虚拟机、容器和Hyper技术
    Hyper:基于Hypervisor的容器化解决方案
    iSCSI 在Linux下的模拟实验
    C-RAN
    spring mvc
    DUBBO
    ajax跨域请求 小栗子 jsonP
    freemarker 页面静态化 简单小栗子
    ajax上传图片监听
    代码优化 粘贴
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2841844.html
Copyright © 2011-2022 走看看