变量

作者: Simon_Ye | 来源:发表于2020-03-03 21:12 被阅读0次

    变量

    变量:命名的内存空间

    • 数据存储方式:
       字符:
       数值:整型,浮点型

    变量:变量类型

    • 作用:
       1. 数据存储格式
       2. 参与的运算
       3. 表示的数据范围
    • 类型:
       字符
       数值:整型、浮点型

    强类型:

    变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。一般定义变量时必须指定类型、参与运算必须符合类型要求;调用为声明变量会产生错误
     如:jave,C#

    弱类型:

    语言的运行时会隐式做数据类型转换。无须指定类型,默认均为字符型;参与运算会自动进行隐式类型转换;变量无须事先定义可直接调用
     如:bash 不支持浮点数,php

    变量命名法则:

    1. 不能是程序中的保留字;例如if,for
    2. 只能使用数字、字母及下划线,且不能以数字开头
    3. 见名知意
    4. 统一命名规则:驼峰命名法
    

    bash中变量的种类

    • 根据变量的生效范围等标准划分下面变量类型:
      • 本地变量:生效范围为当前 shell 进程;对当前 shell 之外的其它 shell 进程,包括当前 shell 的子进程均无效
      • 环境(全局)变量:生效范围为当前 shell 进程及其子进程
      • 局部变量:生效范围为当前 shell 进程中某代码片段,通常指函数
      • 位置变量:$1,$2,...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
      • 特殊变量:$?,$0,$*,$@,$#,$$

    本地变量

    • 变量赋值:name='value'
    • 可以使用引用value:
      1. 可以是直接字串;name="root"
      2. 变量引用:name="$USER"
      3. 命令引用:name="$(COMMAND)"
    • 变量引用:${name},$name
       " ":弱引用,其中的变量引用会被替换为变量值
       ' ':强引用,其中的变量引用不会被替换为变量值,而保持原字符串
    • 显示已定义的所有变量:~]# set
    • 删除变量:~]# unset name

    环境变量:

    • bash 内建的环境变量:
      • PATH
      • SHELL
      • USER
      • UID
      • HOME
      • PWD
      • SHLVL
      • LANG
      • MAIL
      • HOSTNAME
      • HISTSIZE
      • _:前一个命令的最后一个参数

    只读和位置变量:

    • 只读变量:只能声明,但不能修改和删除
      • 声明只读变量:
        ~]# readonly name
        ~]# declare -r name
      • 查看只读变量:
        ~]# readonly -p

    注意:
    变量在小括号中执行,会继承当前 shell 的环境变量,但在括号中修改的变量,不会影响当前 shell 环境,一般为一次性使用;变量在大括号中执行,会继承当前 shell 的环境变量,但在括号中修改的变量,也会影响当前 shell 环境。

    • 位置变量:在脚本代码中调用通过命令行传递给脚本的参数
       $1,$2,...:对应第1、第2等参数,shift [n]换位置
       $0:命令本身
       $*:传递给脚本的所有参数,全部参数合为一个字符串
       $@:传递给脚本的所有参数,每个参数为独立字符串
       $#:传递给脚本的参数的个数
       set --:清空所有位置变量

    注意:$@和$*只有在被双引号包起来的时候才会有差异

    退出状态:

    • 进程使用退出状态来报告成功或失败
       0:代表成功
       1-255:代表失败
      $?变量保存最近的命令退出状态
    • 例如:
      [root@node2 ~]# ping -c1 -W1 hostdown &> /dev/null
      [root@node2 ~]# echo $?
      2
      

    相关文章

      网友评论

          本文标题:变量

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