zoukankan      html  css  js  c++  java
  • Bash变量

    1. 变量定义

    #!/bin/bash
    
    
    function var_declare() {
        local name="yuezhu"     #函数局部变量
        age=25    #默认全局变量
        readonly sex="female"    #全局只读变量
    }
    
    function var_use() {
        echo "${name}"    #error
        echo "${age}"    #25
        echo "${sex}"    #female
        sex="male"    #error
        unset name    #删除变量定义
        echo "${name}"
    }
    
    function main() {
        var_declare
        var_use
    }
    
    main $*

    2. 特殊变量

    $0    #当前脚本的文件名(包含路径)
    $n    #传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
    $#    #传递给脚本或函数的参数个数。
    $*    #传递给脚本或函数的所有参数。(所有一起)
    $@    #传递给脚本或函数的所有参数。(一个一个)被双引号(" ")包含时,与 $* 稍有不同。
    $?    #上个命令的退出状态(退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1),或函数的返回值。
    $$    #当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

    3. $* 和 $@ 的区别

    $* 和 $@ 都表示传递给函数或脚本的所有参数。

    不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

    被双引号(" ")包含时

    • "$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;
    • "$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

    4. 变量替换

     

    形式

    说明
    ${var}

    变量本来的值

    ${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
    ${var:=word}

    如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。

    ${var:+word}

    如果变量 var 被定义,那么返回 word,但不改变 var 的值。

    ${var:?message}

    如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。

    若此替换出现在Shell脚本中,那么脚本将停止运行。

  • 相关阅读:
    轨迹预测-运动递归函数
    Mandelbrot集合及其渲染
    如何检测一个圆在多个圆内?
    【转】三十分钟掌握STL
    【转】如何理解c和c++的复杂类型声明
    有1,2,3一直到n的无序数组,排序
    归并排序
    希尔排序
    快速排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/licongyu/p/6480579.html
Copyright © 2011-2022 走看看