美文网首页
Shell 变量

Shell 变量

作者: tafanfly | 来源:发表于2019-07-30 16:05 被阅读0次

    变量命名

    shell命名规则如下:

    • 命名只能用英文字母,数字和下划线,且首字符不能以数字开头
    • 命名不能中间空格
    • 命名不可使用标点符号
    • 命名不含bash的关键字

    例如下面的name='LiLei'name就是一个变量:

    #!/bin/bash
    
    name='LiLei'
    echo $name
    
    #sh test.sh
    LiLei
    

    注意变量名和==和赋值之间不能有空格, 否则会报错:
    (1)name ='LiLei', 左边有空格, 脚本会报错 test.sh: line 2: name: command not found
    (2)name= 'LiLei', 右边有空格, 脚本会报错 test.sh: line 2: LiLei: command not found

    变量使用

    使用变量名只需要在变量名前面加$符号, 而{}大括号可用可不同,主要是用来界定变量。
    注意:shell变量不需要先定义后使用,如果对一个没有定义的变量取值,则值为空字符串

    #!/bin/bash
    name='LiLei'
    
    echo $name
    echo ${name}
    echo "My name is ${name}Lei"
    echo "My name is $nameLei"
    
    #sh test.sh
    LiLei
    LiLei
    My name is LiLeiLei
    My name is
    

    重定义变量

    已定义的变量,可以被重新定义。

    #!/bin/bash
    
    name='LiLei'
    echo $name
    name='ZhangSan'
    echo ${name}
    
    #sh test.sh
    LiLei
    ZhangSan
    

    只读变量

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变, 否则报错。

    #!/bin/bash
    
    name='LiLei'
    echo $name
    readonly name
    name='ZhangSan'
    echo ${name}
    
    #sh test.sh
    LiLei
    test.sh: line 6: name: readonly variable
    

    删除变量

    使用 unset 命令可以删除变量, 输出的被删除变量为空。

    #!/bin/bash
    
    name='LiLei'
    echo $name
    unset name
    echo ${name}
    
    #sh test.sh
    LiLei
    
    

    注意:只读变量不可被删除

    #!/bin/bash
    
    name='LiLei'
    readonly name
    unset name
    echo ${name}
    
    #sh test.sh
    test.sh: line 5: unset: name: cannot unset: readonly variable
    LiLei
    

    特殊变量

    特殊变量在后面的shell编写过程中广泛应用

    变量 含义
    $0 当前脚本的文件名
    $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
    $# 传递给脚本或函数的参数个数。
    $* 传递给脚本或函数的所有参数。
    $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
    $? 上个命令的退出状态,或函数的返回值。
    $$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。

    变量类型

    运行shell时,会同时存在三种变量:

    • 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
    • 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
    • shell变量: shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    相关文章

      网友评论

          本文标题:Shell 变量

          本文链接:https://www.haomeiwen.com/subject/rfwdkctx.html