1. 概述

  1. 概述

    1. 知识点又稀又碎, 面试一问就流泪
    2. 简单介绍下 shell 下的变量及其基本操作

2. 环境

  1. 操作系统

    1. CentOS Linux release 7.5
  2. 用户
    1. root 用户
  3. 约定
    1. 使用 > 作为 命令提示符, 不是命令的一部分, 需要注意
    2. 所有命令不保证 可以无脑复制执行, 使用前需要理解
    3. '#' 表示注释

2. 变量分类

  1. 概述

    1. 变量按照 作用域 和 用户 两个维度的划分不同类型
    2. 一上来就大摆概念, 是我很不喜欢的一种描述方式, 但是目前我也没啥更好的
  2. 作用域

    1. 局部变量

      1. 常见于 shell 脚本中
      2. 出现在 函数 里
      3. 仅在函数中生效, 出了函数就无效了
    2. 全局变量
      1. 在当前 shell 里生效
    3. 环境变量
      1. 在当前 shell 及其 子 shell 里生效
  3. 用户

    1. 当前用户
    2. 所有用户

3. 基本操作

  1. 概述

    1. 讲述基本操作

1. 设置变量

  1. 概述

    1. 设置变量
    2. 确认成功

1. 查看变量, 确认变量没有被设置

  1. 命令

    # 1. 首先确认一下, 这个变量有没有被设置
    ## 1. 假设变量名为 key01
    ## 2. shell 里用可以用 $<name> 或者 ${<变量名>} 来对变量取值, 我倾向于 第二种, 比较有 仪式感, 当然也有别的好处, 想起来再说
    > echo ${key01}
    # 2. 如果没有设定变量, 会返回一个 空行

2. 设置变量

  1. 命令

    # 1. 既然变量没有被设置, 我们来设置变量
    > key01 = 'var01'
    # 2. 成功后没有任何返回值

3. 查看变量

  1. 命令

    # 1. 第二步设置的变量, 在当前 shell 里, 可以使用了
    # 2. 这里设置的, 是一个 全局变量
    > echo ${key01}
    var01
    # 3. 如果之前设置成功, 会直接返回 之前设置的变量值

2. 查看变量

  1. 开始都查看了, 为啥这下又要查看

    1. 开始只是查询单个变量, 这次能查一堆
    2. 后面有惊喜

1. 使用 set 命令, 查看 变量

  1. 命令

    # 1. grep 是用来过滤的, 这个暂时不讲
    # 2. 执行命令后, 返回一个值, 就是之前设置的 全局变量
    > set | grep key01
    key01=var01

2. 使用 env 命令, 查看 变量

  1. 命令

    # 1. 这里就没有找出来 key01
    # 2. 这是为啥呢?
    > env | grep key01

3. 命令区别

  1. 全局变量

    1. 直接配置的变量, 是全局变量
    2. 生效的范围, 只有当前 shell 终端
      1. 不信你换个别的 shell 终端, 用 set 也找不到
  2. set 与 env
    1. set 可以查询 所有变量
    2. env 只能查询 环境变量

3. 环境变量

1. 环境变量

  1. 环境变量

    1. 作用域, 是当前 shell 终端, 与所有的 子终端

      1. 不信你配置个 环境变量, 再别的 shell 终端看看
      2. 啥, 不会啊...对哦, 还没说这个, 马上说

2. 配置环境变量

  1. 命令

    # 1. 将已经配置好的 key01 全局变量, 配置为 环境变量
    > export key01
    # 2. 验证, 找到结果, 验证通过
    > env | grep key01
    key01=var01

4. 用户 与 全局环境变量

  1. 概述

    1. 已经学会了配置 环境变量
    2. 但也有些问题
      1. 配置后只能对 执行命令的 shell 生效

        1. 新开窗口就失效了
        2. 如果有需要, 每次都要重新配置
    3. 解决方案
      1. 可以通过 配置文件 配置 环境变量
      2. 可以对 单个用户 或者 全局用户 配置

1. 用户维度

  1. 命令

    # 1. 打开配置文件 ~/.bash_profile
    # 2. 在 文本中加入配置 环境变量 的命令
    key01=var01
    export key01
    # 3. 最后执行 source 命令, 让 修改生效
    > source ~/.bash_profile
    # 4. 生效之后, 可以查看到该环境变量
    ## 1. 只要以该用户登录, 新的 shell 终端也会有

2. 全局维度

  1. 命令

    # 1. 思路相同
    # 2. 配置文件: /etc/profile

5. 最后: 取消变量

  1. 命令

    # 1. 如果你不想要之前的变量了, 也没问题
    > unset key01
    # 2. 取消之后, 就找不到了

ps

  1. ref

    1. https://www.cnblogs.com/liang-io/p/9825363.html#_label0
    2. https://www.cnblogs.com/yang-hao/p/5968577.html

Shell 变量简介的更多相关文章

  1. shell(shell变量、条件表达式、流程控制)

    本章内容: 变量 运算 if语句 for语句 while语句 break.continue 实例 shell变量 1.shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数 ...

  2. (一)Linux Shell编程——简介、变量、字符串、数组

    1. Shell简介 1.1 Shell出现背景 Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件. 对于图形界面,用户点击某个图标就能启动某个程序:对于命令行,用户输入某个程序的名字( ...

  3. shell脚本编程之变量简介及脚本执行过程

    脚本变量简介 变量类型:字符型.数值型.真.假:事先确定数据的存放格式和长度: 变量存放在内存空间: 编译型语言,没有额外的处理逻辑,属于强类型语言: 脚本型语言,可以有解释器控制:所以,可以是弱类型 ...

  4. Linux shell中一些参数与变量简介

    linux中shell变量$#,$@,$0,$1,$2,$!,$$,$*,$-,$@......等很多个,很容易记错,这里再次整理一下,相关含义解释如下,并附上一个实践截图. 多看几次,多用几次,应该 ...

  5. shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)

    如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...

  6. Linux Shell——bash shell 脚本简介

    bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash s ...

  7. Linux 下Shell变量,环境变量的联系与区别

    Linux下Shell变量,环境变量的联系与区别 by:授客 QQ:1033553122 1.  简介 linux下的变量可分成两种:Shell变量和环境变量. Shell变量,又称本地变量,包括私有 ...

  8. 鸟哥的私房菜:Bash shell(一)-Bash shell功能简介

    Bash shell系列里,由变量谈起,先讲到环境变量的功能与修改的问题, 然后会继续提到历史指令的运用.接下来,就会谈一下『数据流重导向』这个重要概念, 最后就是管线命令的利用! 一  Bash s ...

  9. shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)

    既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time...    shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...

随机推荐

  1. 有用的JS函数

    1. QueryString function queryString(key) { var re = new RegExp("[?&]" + key + "=( ...

  2. 51nod 1437 迈克步

    题目链接 先利用单调栈or其他方法找到一个元素g[i]作为最小值的区间,设为[L, R]. 那么长度为R-L+1的组的最大值ans=max(ans,g[i]).但是有一个问题: 比如6这个元素是长度为 ...

  3. [朴孝敏/Loco][Nice Body]

    歌词来源:http://music.163.com/#/song?id=28738294 作曲 : 勇敢兄弟/大象王国 [作曲 : 勇敢兄弟/大象王国] 作词 : 勇敢兄弟 [作词 : 勇敢兄弟] A ...

  4. C++字符串类

    好久没有写过程序,最近想学习下界面库的开发,基于directui的界面个人觉得还不错,像金山的源代码和duilib都是不错的.本人想结合二者做一个轻量级的界面库,同时又不依赖于常用的MFC.WTL等. ...

  5. Maven 阿里源

    由于一些不可抗拒因素,在使用 maven 的时候我们不得不需要改变一些设置,以加快我们的下载速度. ​ 仓库配置 ​ 在maven的settings.xml文件里的mirrors节点,添加如下子节点: ...

  6. [T-ARA][지난 달력][旧挂历]

    歌词来源:http://music.163.com/#/song?id=29343994 作曲 : Rocoberry [作曲 : Rocoberry] [作曲 : Rocoberry] 作词 : R ...

  7. Hadoop Spark 基础教程

    0x01  Hadoop 慕课网 https://www.imooc.com/learn/391 Hadoop基础 慕课网 https://www.imooc.com/learn/890 Hadoop ...

  8. MySQL查询时强制区分大写和小写

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zyb_icanplay7/article/details/24981791 平时非常少会考虑数据存储 ...

  9. Owin+ASP.NET Identity浅析系列(五)接入第三方登录

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… OK,用户角色实现后,我们回 ...

  10. 说说Vue.js的v-for

    v-for的话,相比传统的jQuery的  $.each或者for循环要简洁明了的多, 比如在Jquery中我要遍历数据,通常如下几种方式: $.each(apps, function(i, app) ...