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. 计算机应用基础教程作业flash动画 车辆工程 冯大昕

  2. 今天调试一个open有个小启发

    从别处抄来一个代码 mode是:O_WRONLY 以只写方式打开文件 而实际上我用的是read操作,所以老是读出-1 检查了很久才发现是这个错误:O_WRONLY 以只写方式打开文件 -> O_ ...

  3. codeforces 932E Team Work(组合数学、dp)

    codeforces 932E Team Work 题意 给定 \(n(1e9)\).\(k(5000)\).求 \(\Sigma_{x=1}^{n}C_n^xx^k\). 题解 解法一 官方题解 的 ...

  4. Odoo中的逆计算——由compute字段的值逆向修改其依赖值

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281406.html 当通过compute属性指定方法,根据依赖值计算得到当前字段值时.一般也要制定这个计算的 ...

  5. Python 模块化 from .. import 语句资源搜索顺序 (三)

    接着上一篇文章最后的import子句资源搜索顺序,我们来写几个例子了解下. 例一. #test1.py x = 123 #test.py import test1 print(dir()) print ...

  6. [转]墨卡托投影坐标系(Mercator Projection)原理及实现C代码

    墨卡托投影是一种“等角正切圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体 ...

  7. 框架 Hibernate 2

    持久化类百度百科 http://baike.baidu.com/link?url=gNus-8jhK0Mi401aIR-16YUAnWKzOJfeMagUV8_t5iG8235JyjMrmZPd7rI ...

  8. C# 4.0 不要跨程序集用dynamic指向匿名类型 (转载)

    今天写代码时偷懒用了dynamic,结果遇到问题,运行时始终无法获取dynamic对象的属性.原问题简化后如下: 程序集A包含SampleClass类,有一个静态方法,接收一个dynamic类型参数并 ...

  9. spring boot 配置Rabbit

    单独安装Rabbit服务并设置启动,可以通过浏览器访问,一般访问地址是http://localhost:15672/ ,用户名密码看配置文件的用户名密码 1 实例化配置类注解 import org.s ...

  10. 精准测试白皮书v3.0-2019最新版

    现代社会是建立在各种以计算机为基石的软件技术基础之上的.随着日新月异的需求变化,软件系统越来越复杂.很多人觉得软件开发才是重要环节,但实际上,无法对大型软件进行有效的质量把控,就无法真正构建与维护大型 ...