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

    SHELL 变量

    1. SHELL变量综述

    SHELL 是动态语言类型和弱类型语言,变量在使用之前不用显示定义。SHELL的变量不分数据类型,统一按字符串存储。但是根据上下文环境,允许执行不同的操作。

    2. SHELL变量定义

    declare attribute variable 可用于显示定义变量的类型

    -i 定义为整型,之后就可以直接对表达式求值,结果只能为整数,如果求值失败或不是整数,就设置为0.

    -r 定义为只读变量,之后变量不可以修改,不可以删除。

    3. SHELL变量数据类型

    SHELL不支持浮点数

    SHELL 实际上只有2种数据类型,字符串与整数,默认是字符串类型。

    4. 引号

    4.1 单引号

    单引号括起来的字符当做普通字符出现;

    4.2 双引号

    双引号括起来的字符当做普通字符出现,如下四个字符除外:

    美元符号: $

    反斜线:

    单引号: ‘ 

    双引号: “

    4.3 反引号 `

    反引号括起来的字符串被SHELL解释为命令,在执行时,SHELL首先执行该命令,并以它的输出结果取代整个反引号。

    5. 变量的作用域

    5.1 全局变量:

    变量默认是全局变量;

    在脚本中定义的变量是全局变量,其作用域为从被定义的地方开始,直到SHELL脚本结束或变量被显示删除。

    在函数中定义的变量是全局变量,其作用域为从函数被调用时执行变量定义的地方开始,直到SHELL脚本结束或变量被显示删除。

    5.2 局部变量

    局部变量需要显示定义,如在函数内部可通过 local v=200 来定义局部变量,其作用域为从定义的地方开始直到函数结束或是被显示删除

    5.3 变量覆盖

    当函数内部出现与函数外部同名的局部变量时;函数内部的局部变量会屏蔽函数外部的同名全局变量。

    6. 系统变量

    主要是对参数的判断和命令返回值判断时使用。

    变量

    说明

    $n

    n表示参数的位置,如$1表示第一个参数,$2表示第二参数.......

    $#

    命令行参数的个数

    $0

    当前SHELL脚本的名称

    $?

    前一个命令或邯郸的返回代码,0表示成功

    $*

    所有参数以空格分割的字符串,如: 参数1 参数2 参数3 ......

    $@

    所有参数以空格分割的字符串,如: “参数1” “参数2” “参数3......

    $$

    返回本程序的进程ID (PID)

    7. 环境变量

    环境变量是所有SHELL程序都可以使用的变量。如:

    PATH,HOME,IFS,PWD,SHELL等。

    set 命令可以列出所有的环境变量。

    8. 变量赋值与清空

    SHELL中变量是不需要专门的定义与初始化的,未定义的变量与未初始化的变量默认是一个空字符串。

    variable=value

    注意:

    赋值号=两边不能有空格,否则SHELL会将其视为命令

    value 中如果包含空格、制表符、换行符,则必须用单引号或双引号括起来;并且双引号内允许变量替换,单引号内部允许变量替换。

    变量引用用$

    ${var}

    清除变量

    unset var_name

    9. 引用于替换

    所谓引用,是指把字符串用引用符号包括起来,以防止其中的特殊字符被SHELL解释为其它含义。

    引用符合

    说明

    双引号

    除美元符合、反引号、单引号和反斜线以为,其它所有字符保持字面含义

    单引号

    所有字符保持字面含义

    反引号

    反引号中的字符串被解释为SHELL命令执行

    反斜线

    转义字符

    9.1 全引用

    既字符串被单引号括起来

    9.2 部分引用

    既字符串被双引号括起来

    9.3 命令替换

    指在SHELL中,把某个SHELL命令的执行结果赋给某个变量,在SHELL中,有两种方法可以进行命令替换,这两种方法是等价的:

    用反引号: `shell_command`

    用圆括号: $(shell_command)

  • 相关阅读:
    ORA-01940: cannot drop a user that is currently connected
    三分钟入门VyOS网络操作系统
    金笛短信猫发短信一段时间后,停止发送
    ORA-01940 无法删除当前已连接的用户之解决方案
    Table is marked as crashed and should be repaire (
    DirectConnect API
    使用 ElasticSearch Aggregations 进行统计分析
    Cocos2d-x学习笔记(四) 布景层的加入移除
    Spark源代码阅读笔记之DiskStore
    一个搜索迷宫出路的程序
  • 原文地址:https://www.cnblogs.com/ordili/p/9445916.html
Copyright © 2011-2022 走看看