zoukankan      html  css  js  c++  java
  • shell变量赋值进阶

    首先,要理解shell中变量的3种赋值情况:

    1. unset 例子. unset a
    2. 空字符串, null 例子. a=''
    3. 非空,即不是unset,并且不是空字符串 例子: a=1 or a=b

    然后,简单说明有冒号的情况:

    :=
    var=${str:="default"}  
    str 非空, var=$str; 否则var=default; str=default
    
    :-
    var=${str:-"default"}  
    str为unset或者空字符串,var=default,否则var=$str;
        这种一般是shell中设置默认值  
    
    
    :+
    var=${str:+"default"}  
    str 非空,var=default,否则var和str都为空字符串
    

    测试代码:

    #!/bin/bash
    var=before
    unset un_set
    null_str=
    str=1
    var=${un_set-"default"};echo 'var=${un_set-"default"};' "var=$var" " un_set=${un_set}"
    var=${null_str-"default"};echo 'var=${null_str-"default"};' "var=$var" " null_str=${null_str}"
    var=${str-"default"};echo 'var=${str-"default"};' "var=$var" " str=${str}"
    var=${un_set:-"default"};echo 'var=${un_set:-"default"};' "var=$var" " un_set=${un_set}"
    var=${null_str:-"default"};echo 'var=${null_str:-"default"};' "var=$var" " null_str=${null_str}"
    var=${str:-"default"};echo 'var=${str:-"default"};' "var=$var" " str=${str}"
    echo "-------------------"
    echo 
    
    var=${un_set+"default"};echo 'var=${un_set+"default"};' "var=$var" " un_set=${un_set}"
    var=${null_str+"default"};echo 'var=${null_str+"default"};' "var=$var" " null_str=${null_str}"
    var=${str+"default"};echo 'var=${str+"default"};' "var=$var" " str=${str}"
    var=${un_set:+"default"};echo 'var=${un_set:+"default"};' "var=$var" " un_set=${un_set}"
    var=${null_str:+"default"};echo 'var=${null_str:+"default"};' "var=$var" " null_str=${null_str}"
    var=${str:+"default"};echo 'var=${str:+"default"};' "var=$var" " str=${str}"
    echo "-------------------------"
    echo 
    
    var=${un_set="default"};echo 'var=${un_set="default"};' "var=$var" " un_set=${un_set}"
    unset un_set;null_str=;str=abc;
    var=${null_str="default"};echo 'var=${null_str="default"};' "var=$var" " null_str=${null_str}"
    unset un_set;null_str=;str=abc;
    var=${str="default"};echo 'var=${str="default"};' "var=$var" " str=${str}"
    unset un_set;null_str=;str=abc;
    var=${un_set:="default"};echo 'var=${un_set:="default"};' "var=$var" " un_set=${un_set}"
    unset un_set;null_str=;str=abc;
    var=${null_str:="default"};echo 'var=${null_str:="default"};' "var=$var" " null_str=${null_str}"
    unset un_set;null_str=;str=abc;
    var=${str:="default"};echo 'var=${str:="default"};' "var=$var" " str=${str}"
    echo "-------------------------"
    echo
    

    测试结果如下:
    var

    unset和空字符串是无法直接比较的
    null

    ${:-} 和 ${-}的实例应用:

    4

    5

  • 相关阅读:
    Making Pimpl Easy
    OpenCV学习资源
    openCV基础学习(1)
    fl2440原始linux代码的启动日志
    《s3c2440+lan91c111 vxworks驱动调试》疑惑
    使用并行的方法计算斐波那契数列 (Fibonacci)
    [译] SolidWorks的发展历史(1994~2007)
    翻译介绍一点CAD发展的历史
    使用fopen的两点注意事项
    四元数(Quaternions)简介
  • 原文地址:https://www.cnblogs.com/xupeiyuan/p/shell_variable_advance.html
Copyright © 2011-2022 走看看