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. 使用事务和SqlBulkCopy批量插入数据

    SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能 ...

  2. POJ 2528 Mayor's poster

    主要是参考了这个博客 地址戳这儿 题目大意:n(n<=10000) 个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000) .求出最后还能看 ...

  3. scala当中的类

    1.类的定义与创建 创建一个scala class来定义我们的一个类.类当中可以定义各种属性或者方法,或者函数都可以     class Person {       //定义一个属性,叫做name的 ...

  4. D3——Updates, Transitions, and Motion

    <script type="text/javascript"> ; ; ; , , , , , , , , , ,, , , , , , , , , ]; //crea ...

  5. Eureka 集群高可用配置.

    SERVER:1 server: port: 1111 eureka: instance: hostname: ${spring.cloud.client.ip-address} instance-i ...

  6. Gym 100633G Nano alarm-clocks

    题目,给定n个时钟,要求把他们调成一样的时间.求最小的步数 思路:肯定是有一个时钟作为标准的啦,要找到这个时钟,怎么找呢?没其他方便的方法,暴力枚举.那么枚举后,怎么能快速地算到其他时钟转到这个时钟的 ...

  7. storm-kafka

    包依赖

  8. CSS(层叠样式表)基础知识

     CSS 指层叠样式表 (Cascading Style Sheets).样式定义怎样显示 HTML 元素.它通常存储在样式表中,把样式加入到 HTML 4.0 中,解决内容与表现分离的问题. 当同一 ...

  9. UVa 1515 - Pool construction(最小割)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. Redis简单集群配置

    参考链接为:http://blog.csdn.net/u014230881/article/details/71123494 比较系统学习和熟练使用Redis命令可参考该教程:http://www.r ...