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

posted @ 2017-02-28 19:41  弋痕夕的残影  阅读(225)  评论(0编辑  收藏  举报