zoukankan      html  css  js  c++  java
  • Shell:变量

    介绍

    变量用于存储管理临时数据,这些数据都是在运行内存中的。

    变量类型

    1. 系统环境变量
    2. 自定义变量
    3. 特殊符号变量

    系统环境变量

    介绍

    是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量,共享给所有的Shell程序使用

    Shell的配置文件分类

    1.全局配置文件
    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc

    2.个人配置文件
    当前用户/.bash_profile
    当前用户/.bashrc

    一般情况下,我们都是直接针对全局配置进行操作。

    在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

    系统级环境变量:Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用, 全局共享

    用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用, 登录用户使用

    查看当前Shell系统环境变量:

    env
    

    image-20210511100451057

    查看Shell变量(系统环境变量+自定义变量+函数):

    set
    

    image-20210511100542582

    常用系统环境变量

    变量名称 含义
    PATH 与windows环境变量PATH功能一样,设置命令的搜索路径,以冒号为分割
    HOME 当前用户主目录:/root
    SHELL 当前shell解析器类型:/bin/bash
    HISTFILE 显示当前用户执行命令的历史列表文件:/root/.bash_history
    PWD 显示当前所在路径
    OLDPWD 显示之前的路径
    HOSTNAME 显示当前主机名
    HOSTTYPE 显示主机的架构,是i386、i686、还是x86、x64等:x86_64
    LANG 设置当前系统语言环境:zh_CN.UTF-8

    image-20210511100818989

    自定义变量

    分类

    1. 自定义局部变量
    2. 自定义常量
    3. 自定义全局变量

    自定义局部变量

    就是定义在一个脚本文件中的变量, 只能在这个脚本文件中使用的变量, 就是局部变量

    定义语法

    var_name=value
    

    变量定义规则

    1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头
    2. 等号两侧不能有空格
    3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算
    4. 变量的值如果有空格, 必须使用双引号括起来
    5. 不能使用Shell的关键字作为变量名称

    查询变量值语法

    # 语法1: 直接使用变量名查询
    $var_name
    # 语法2: 使用花括号
    ${var_name}
    # 区别: 花括号方式适合拼接字符串
    

    image-20210511101828940

    变量删除

    unset 变量名
    

    image-20210511101912393

    自定义常量

    设置变量值后就不可以修改的

    语法

    readonly 变量名
    

    image-20210511102453609

    自定义全局变量

    就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用

    父子Shell环境介绍

    例如: 有2个Shell脚本文件 A.sh 和 B.sh

    如果 在A.sh脚本文件中执行了B.sh脚本文件, 那么A.sh就是父Shell环境, B.sh就是子Shell环境

    定义语法

    export name
    

    测试:

    image-20210511105936792

    执行shell1.sh

    image-20210511105956558

    特殊符号变量

    特殊变量:$n

    语法

    $n
    

    含义

    用于接收脚本文件执行时传入的参数
    $0 用于获取当前脚本文件名称的
    $1~$9, 代表获取第一输入参数到第9个输入参数
    第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取
    

    执行脚本文件传入参数语法

    sh 脚本文件 输入参数1 输入参数2 ...
    

    image-20210511111140130

    特殊变量:$#

    含义:获取所有输入参数的个数

    image-20210511111617050

    特殊变量:$*、$@

    含义都是获取所有的输入参数,用于输出所有输入参数

    $*$@区别

    1.不使用双引号括起来, 功能一样
      $*和$@获取所有输入参数,格式为: $1 $2 ... $n
    2.使用双引号括起来
      "$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
      "$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
      使用循环打印所有输入参数可以看出区别
    

    循环语法

    for var in 列表变量
    do 
    	命令
    done
    

    测试:

    image-20210511112658545

    特殊变量:$?

    含义:用于获取上一个Shell命令的退出状态码, 或者是函数的返回值

    每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功

    一般来说, 返回0代表命令执行成功, 非0代表执行失败

    image-20210511130044305

    特殊变量:$$

    含义:用于获取当前shell环境的进程ID

    image-20210511130303339

  • 相关阅读:
    位运算之巧解
    牛客练习赛28
    最大素因子
    hdu 4135 Co-prime(容斥定理入门)
    NYOJ #21 三个水杯(bfs)
    牛客国庆集训派对Day_7
    牛客国庆集训派对Day_4~6
    牛客国庆集训派对Day_1~3
    [POJ2336]Ferry Loading II
    [BZOJ1131][POI2008]Sta
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14754863.html
Copyright © 2011-2022 走看看