• 2.8 补充:shell变量引用方式


    一 变量
     
    变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址。
     
    Shell中:变量可由字母数字和下划线组成,以字母或下划线开头。
     
    命名:PATH=/sbin
     
         JAVA_HOME=”/usr/lib”
     
    (变量名区分大小写)
     
    在shell中,变量的数据类型无需显式声明,变量的数据类型会根据不同操作有所变化。
     
    (shell变量部分数据类型,统一按字符串存储,但根据变量的上下文环境,允许程序执行一些不同操作)。为了能执行加减法计算,shell为自动进行数据类型的转换,如果遇到含义非数字的字符串,则该字符串被转换成整数0。同时,在空串以及没有定义变量的情况下,变量值都会被转换为整数0。
     
    例如,n=“” echo “n=$n”
     
         echo “p=$p”
     
     
     
    1.1变量的定义:
     
    Shell中可以直接使用变量,无需定义,如果变量的值包含空格,一定要用引号引起来。
     
    declare attribute variable(控制变量相关属性)
     
    attribute 表示变量属性,variable表示名称,属性有:
     
    -p:显示所有变量值
     
    -i:定义为整数
     
    -r:定义为只读变量
     
    -a:定义为数组变量
     
    -f:显示所有自定义函数,包括名称和函数体
     
    -x:变量设置成环境变量,随后的脚本和程序可以使用
     
    例子:
     
    x=6/3
     
    echo "$x"                            //6/3
     
    #定义变量x为整数
     
    declare -i x
     
    echo "$x"                          //6/3,因为shell中所有数据都当做字符串存储
     
    #将算术式赋给变量x
     
    x=6/3
     
    echo "$x"                         //2,变量声明为整数后,可以进行算术运算
     
    #将字符串赋给变量x
     
    x=hello
     
    echo "$x"
     
    #将浮点数赋给变量x
     
    x=3.14
     
    echo "$x"                          //报错,bash不支持浮点数
     
    #取消变量x的整数属性
     
    declare +i x
     
    #重新将算术式赋给变量x
     
    x=6/3
     
    echo "$x"
     
    #求表达式的值
     
    x=$[6/3]
     
    echo "$x"                              //2,得到算术值得两种方法,方括号
     
    #求表达式的值
     
    x=$((6/3))                             //2,得到算术值得两种方法,圆括号
     
     
    1.2 引号
     
    单引号(‘’):括起来的字符作为普通字符
     
    双引号(“”):括起来的字符,除    “$”, “”,  “`”和“``”保留其特殊功能外,其余仍作为普通字符
     
    反引号(``):括起来的字串被解释为命令,shell首先执行该命令,并以他的标准输出结果取代整个反引号部分
     
    #! /bin/bash
     
    #输出当前目录
     
    echo "current directory is `pwd`"
     
    结果:currentdirectory is /root/chapter3
     
    (先执行`pwd`,结果/root/chapter3取代`pwd`)
     
     
    1.3 变量的作用域:
     
    全局变量:shell中,全局变量可在脚本中定义,也可在某个函数中定义。脚本中定义的变量都为全局变量,作用域为被定义的地方开始,指定shell脚本结束或显示删除。
     
    例:
     
    #! /bin/bash
     
    #定义函数
     
    func()
     
    {
     
       #输出变量x的值
     
      echo "$v1" //100
     
       #修改变量x的值
     
      v1=200
     
    }
     
    #在脚本中定义变量x
     
    v1=100
     
    #调用函数
     
    func
     
    #输出变量x的值
     
    echo "$v1"  //200
     
    局部变量:通常仅限某个程序段访问,如函数内部。Shell中可在函数内部通过local关键字定义局部变量,另外函数的参数也是局部变量。
     
    例:
     
    #! /bin/bash
     
    #定义函数
     
    func()
     
    {
     
       #使用local关键字定义局部变量
     
      local v2=200
     
    }
     
    #调用函数
     
    func
     
    #输出变量的值
     
    echo "$v2"    // 空值,函数外面不能获得该变量的值
     
    注意:全局变量与局部变量同名时,函数内部的局部变量优先被使用。无论在何处,赋值语句都会影响全局变量的值,全局变量的值改变后,最整个脚本都有效,默认情况下,函数内部定义的变量也是全局变量,除非用local声明
     
     
    1.4 系统变量:
     
    Shell的系统变量主要对参数判断和命令返回值判断时的使用,包括脚本和函数的参数,以及脚本和函数的返回值。常用系统变量:
     
    $n:表示传递给脚本的第n个参数,如$1表示第一个参数
     
    $#:命令行参数的个数
     
    $0:当前脚本名称
     
    $*:以“参数1参数2….”形式返回所有参数的值
     
    $@:以“参数1”“参数2”形式返回所有参数的值
     
    $_:保存之前执行的命令的最后一个参数
     
    例子:
     
    #! /bin/bash
     
    #输出脚本的参数个数
     
    echo "thenumber of parameters is $#"
     
    #输出上一个命令的退出状态码
     
    echo "thereturn code of last command is $?"
     
    #输出当前脚本名称
     
    echo "thescript name is $0"
     
    #输出所有的参数
     
    echo "theparameters are $*"
     
    #输出其中的几个参数
     
    echo"$1=$1;$2=$2;$11=$11"
     
    1.5 环境变量:
     
     
    Shell环境变量是所有shell程序都可以使用的变量。(全部大写)
     
    PATH:命令搜索路径,以冒号为分隔符,当前目录不在系统路径里
     
    HOME:用户主目录的路径名,cd命令的默认参数
     
    COLUMNS:命令编辑模式下可使用命令行长度
     
    HISTSIZE:命令历史文件中最多可包含的命令条数
     
    HISTFILE:命令历史文件
     
    HISTFILESIZE:命令历史文件中包含的最大行数
     
    IFS:shell使用的分隔符
     
    LOGNAME:当前的登入名
     
    SHELL:Shell的全路径名
     
    TERM:终端类型
     
    TMOUT:shell自动退出时间,单位秒,为0则禁止shell自动退出
     
    PWD:当前工作目录
     
    可以使用set命令列出所有环节变量,set| more
     
    例子:
     
    #! /bin/bash
     
    #输出命令搜索路径
     
    echo"commands path is $PATH"
     
    #输出当前的登录名
     
    echo "currentlogin name is $LOGNAME"
     
    #输出当前用户的主目录
     
    echo "currentuser's home is $HOME"
     
    #输出当前的Shell
     
    echo "currentshell is $SHELL"
     
    #输出当前工作目录
     
    echo "currentpath is $PWD"
     
    1.6 变量赋值和清空:
     
     
    Shell中所有普通变量值都看作字符串,如果赋值包含空格,制表符和换行符,要用单引号或双引号括起来,一个没有初始化的shell变量被认为是一个空字符串。
     
    1.7 清除变量:
     
     
     
     
    变量被清除后,代表的值也会消失。消除变量用unset语句
     
     
     
    unsetvariable_name
     
    二 引用
     
    2.1引用变量的值:
     
     
    可通过在变量面前加$来获取变量的值。
     
    为了能使shell正确的界定变量名,可以在引用变量时使用大括号将变量括起来
     
    如:
     
    v4=123
     
    echo “${v4}abc”
     
    结果:123abc
     
    (若直接echo “$v4abc”,会变成空字符串,因为v4abc没有被定义)
     
    2.2引用和替换:
     
     
    引用:字符串用引用符合包括起来,防止特殊字符被shell解释成其他含义
     
    常用引用符号:
     
    双引号:除$,’’,``,之外,其他所有字符保持字面意义
     
    单引号:所有字符保持字面意义
     
    反引号:反引号中的字符串被解释为shell命令
     
    反斜线:转义字符,屏蔽后的字符的特殊意义
     
    2.3全引用:
     
     
    单引号引用的方式。
     
    #! /bin/bash
     
    #定义变量v1
     
    v1="chunxiao"
     
    #输出含有变量名的字符串
     
    echo 'Hello, $v1'  //全引用保持字面意义
     
    结果:Hello ,$v1
     
    2.4 部分引用:
     
     
    双引号引用方式
     
    2.5 命令替换:
     
     
    将某个shell命令的执行结果赋给某个变量。
     
    两种方式:
     
    反引号:`shell_command`
     
    圆括号:$(shell_command)
     
    2.6转义:
     
     
    转换某些特殊字符的意义,表示。屏蔽反斜线后面字符的特殊意义
     
    如:
     
    Echo $SHELL
     
    结果:/bin/bash
     
    Echo $SHELL
     
    结果:$SHELL
     
  • 相关阅读:
    百度编辑器粘贴word图片且图片文件自动上传功能
    百度ueditor粘贴word图片且图片文件自动上传功能
    ueditor粘贴word图片且图片文件自动上传功能
    fckeditor粘贴word图片且图片文件自动上传功能
    HTML编辑器如何能实现直接粘贴把图片上传到服务器中
    网页编辑器如何能实现直接粘贴把图片上传到服务器中
    富文本编辑器如何能实现直接粘贴把图片上传到服务器中
    文本编辑器如何能实现直接粘贴把图片上传到服务器中
    VUE大文件上传支持断点上传
    matlab中矩阵的点乘(.*)
  • 原文地址:https://www.cnblogs.com/avention/p/10237726.html
Copyright © 2020-2023  润新知