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. Java日期格式化参数对照表

    Symbol Meaning Presentation Example G era designator Text AD y year Number 2009 M month in year Text ...

  2. elasticsearch 相关

    1.对elsasticsearch index的解释,What exactly is an index in Elasticsearch ? basic definition An index is  ...

  3. 关于options请求的一点理解

    最近最项目改造,对所有的ajax请求统一做了一点处理,发现原来很正经的ajax请求突然不正常了,每个ajax之前都多了一个相应的method为options的请求.虽然之前知道ajax的请求中meth ...

  4. js判断鼠标滚轴方向(向上或向下)

    var num=1; $(document).on("mousewheel DOMMouseScroll", function (e) { var delta = (e.origi ...

  5. 2424. [HAOI2010]订货【费用流】

    Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为 ...

  6. [USACO09MAR]Look Up

    嘟嘟嘟 题面说的有点问题,应该是向后看齐. 于是我们维护一个单调递减栈,如果当前a[i]比栈顶元素大,就执行pop操作,然后把pop出来的元素的答案都用 i 更新即可. #include<cst ...

  7. ZooKeeper学习之路 (六)ZooKeeper API的简单使用(二)级联删除与创建

    编程思维训练 1.级联查看某节点下所有节点及节点值 2.删除一个节点,不管有有没有任何子节点 3.级联创建任意节点 4.清空子节点 ZKTest.java public class ZKTest { ...

  8. 自定义ViewPagerIndicator-视图指示器

    ViewPagerIndicator.java public class ViewPagerIndicator extends LinearLayout { private Paint mPaint; ...

  9. springboot+maven——打war包方式

    转载 Springboot打包war包部署到自己的tomcat中 一.springboot+maven工程——打war包步骤如下: 1.修改父pom.xml文件: <packaging>p ...

  10. linux内核中socket的创建过程源码分析(总结性质)

    在漫长地分析完socket的创建源码后,发现一片浆糊,所以特此总结,我的博客中同时有另外一篇详细的源码分析,内核版本为3.9,建议在阅读本文后若还有兴趣再去看另外一篇博文.绝对不要单独看另外一篇. 一 ...