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脚本中,那么脚本将停止运行。

  • 相关阅读:
    在visual studio 2010中调用ffmpeg
    RTP/RTCP/RTSP/SIP/SDP
    YV12数据与AVFrame的相互转换
    实现输出h264直播流的rtmp服务器
    RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
    CentOS 硬盘分区方案
    ubuntu默认root密码
    windows下ACE怎样安装与使用说明?
    CentOS 6.4 图文安装教程
    我自己的FFMpeg编译之路
  • 原文地址:https://www.cnblogs.com/licongyu/p/6480579.html
Copyright © 2011-2022 走看看