Shell 变量简介
1. 概述
- 概述
- 知识点又稀又碎, 面试一问就流泪
- 简单介绍下 shell 下的变量及其基本操作
2. 环境
- 操作系统
- CentOS Linux release 7.5
- 用户
- root 用户
- 约定
- 使用 > 作为 命令提示符, 不是命令的一部分, 需要注意
- 所有命令不保证 可以无脑复制执行, 使用前需要理解
- '#' 表示注释
2. 变量分类
概述
- 变量按照 作用域 和 用户 两个维度的划分不同类型
- 一上来就大摆概念, 是我很不喜欢的一种描述方式, 但是目前我也没啥更好的
作用域
- 局部变量
- 常见于 shell 脚本中
- 出现在 函数 里
- 仅在函数中生效, 出了函数就无效了
- 全局变量
- 在当前 shell 里生效
- 环境变量
- 在当前 shell 及其 子 shell 里生效
- 局部变量
用户
- 当前用户
- 所有用户
3. 基本操作
- 概述
- 讲述基本操作
1. 设置变量
- 概述
- 设置变量
- 确认成功
1. 查看变量, 确认变量没有被设置
命令
# 1. 首先确认一下, 这个变量有没有被设置
## 1. 假设变量名为 key01
## 2. shell 里用可以用 $<name> 或者 ${<变量名>} 来对变量取值, 我倾向于 第二种, 比较有 仪式感, 当然也有别的好处, 想起来再说
> echo ${key01}
# 2. 如果没有设定变量, 会返回一个 空行
2. 设置变量
命令
# 1. 既然变量没有被设置, 我们来设置变量
> key01 = 'var01'
# 2. 成功后没有任何返回值
3. 查看变量
命令
# 1. 第二步设置的变量, 在当前 shell 里, 可以使用了
# 2. 这里设置的, 是一个 全局变量
> echo ${key01}
var01
# 3. 如果之前设置成功, 会直接返回 之前设置的变量值
2. 查看变量
- 开始都查看了, 为啥这下又要查看
- 开始只是查询单个变量, 这次能查一堆
- 后面有惊喜
1. 使用 set 命令, 查看 变量
命令
# 1. grep 是用来过滤的, 这个暂时不讲
# 2. 执行命令后, 返回一个值, 就是之前设置的 全局变量
> set | grep key01
key01=var01
2. 使用 env 命令, 查看 变量
命令
# 1. 这里就没有找出来 key01
# 2. 这是为啥呢?
> env | grep key01
3. 命令区别
- 全局变量
- 直接配置的变量, 是全局变量
- 生效的范围, 只有当前 shell 终端
- 不信你换个别的 shell 终端, 用 set 也找不到
- set 与 env
- set 可以查询 所有变量
- env 只能查询 环境变量
3. 环境变量
1. 环境变量
- 环境变量
- 作用域, 是当前 shell 终端, 与所有的 子终端
- 不信你配置个 环境变量, 再别的 shell 终端看看
- 啥, 不会啊...对哦, 还没说这个, 马上说
- 作用域, 是当前 shell 终端, 与所有的 子终端
2. 配置环境变量
命令
# 1. 将已经配置好的 key01 全局变量, 配置为 环境变量
> export key01
# 2. 验证, 找到结果, 验证通过
> env | grep key01
key01=var01
4. 用户 与 全局环境变量
- 概述
- 已经学会了配置 环境变量
- 但也有些问题
- 配置后只能对 执行命令的 shell 生效
- 新开窗口就失效了
- 如果有需要, 每次都要重新配置
- 配置后只能对 执行命令的 shell 生效
- 解决方案
- 可以通过 配置文件 配置 环境变量
- 可以对 单个用户 或者 全局用户 配置
1. 用户维度
命令
# 1. 打开配置文件 ~/.bash_profile
# 2. 在 文本中加入配置 环境变量 的命令
key01=var01
export key01
# 3. 最后执行 source 命令, 让 修改生效
> source ~/.bash_profile
# 4. 生效之后, 可以查看到该环境变量
## 1. 只要以该用户登录, 新的 shell 终端也会有
2. 全局维度
命令
# 1. 思路相同
# 2. 配置文件: /etc/profile
5. 最后: 取消变量
命令
# 1. 如果你不想要之前的变量了, 也没问题
> unset key01
# 2. 取消之后, 就找不到了
ps
- ref
Shell 变量简介的更多相关文章
- shell(shell变量、条件表达式、流程控制)
本章内容: 变量 运算 if语句 for语句 while语句 break.continue 实例 shell变量 1.shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数 ...
- (一)Linux Shell编程——简介、变量、字符串、数组
1. Shell简介 1.1 Shell出现背景 Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件. 对于图形界面,用户点击某个图标就能启动某个程序:对于命令行,用户输入某个程序的名字( ...
- shell脚本编程之变量简介及脚本执行过程
脚本变量简介 变量类型:字符型.数值型.真.假:事先确定数据的存放格式和长度: 变量存放在内存空间: 编译型语言,没有额外的处理逻辑,属于强类型语言: 脚本型语言,可以有解释器控制:所以,可以是弱类型 ...
- Linux shell中一些参数与变量简介
linux中shell变量$#,$@,$0,$1,$2,$!,$$,$*,$-,$@......等很多个,很容易记错,这里再次整理一下,相关含义解释如下,并附上一个实践截图. 多看几次,多用几次,应该 ...
- shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)
如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...
- Linux Shell——bash shell 脚本简介
bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash s ...
- Linux 下Shell变量,环境变量的联系与区别
Linux下Shell变量,环境变量的联系与区别 by:授客 QQ:1033553122 1. 简介 linux下的变量可分成两种:Shell变量和环境变量. Shell变量,又称本地变量,包括私有 ...
- 鸟哥的私房菜:Bash shell(一)-Bash shell功能简介
Bash shell系列里,由变量谈起,先讲到环境变量的功能与修改的问题, 然后会继续提到历史指令的运用.接下来,就会谈一下『数据流重导向』这个重要概念, 最后就是管线命令的利用! 一 Bash s ...
- shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time... shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...
随机推荐
- 计算机应用基础教程作业flash动画 车辆工程 冯大昕
- 今天调试一个open有个小启发
从别处抄来一个代码 mode是:O_WRONLY 以只写方式打开文件 而实际上我用的是read操作,所以老是读出-1 检查了很久才发现是这个错误:O_WRONLY 以只写方式打开文件 -> O_ ...
- codeforces 932E Team Work(组合数学、dp)
codeforces 932E Team Work 题意 给定 \(n(1e9)\).\(k(5000)\).求 \(\Sigma_{x=1}^{n}C_n^xx^k\). 题解 解法一 官方题解 的 ...
- Odoo中的逆计算——由compute字段的值逆向修改其依赖值
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281406.html 当通过compute属性指定方法,根据依赖值计算得到当前字段值时.一般也要制定这个计算的 ...
- Python 模块化 from .. import 语句资源搜索顺序 (三)
接着上一篇文章最后的import子句资源搜索顺序,我们来写几个例子了解下. 例一. #test1.py x = 123 #test.py import test1 print(dir()) print ...
- [转]墨卡托投影坐标系(Mercator Projection)原理及实现C代码
墨卡托投影是一种“等角正切圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体 ...
- 框架 Hibernate 2
持久化类百度百科 http://baike.baidu.com/link?url=gNus-8jhK0Mi401aIR-16YUAnWKzOJfeMagUV8_t5iG8235JyjMrmZPd7rI ...
- C# 4.0 不要跨程序集用dynamic指向匿名类型 (转载)
今天写代码时偷懒用了dynamic,结果遇到问题,运行时始终无法获取dynamic对象的属性.原问题简化后如下: 程序集A包含SampleClass类,有一个静态方法,接收一个dynamic类型参数并 ...
- spring boot 配置Rabbit
单独安装Rabbit服务并设置启动,可以通过浏览器访问,一般访问地址是http://localhost:15672/ ,用户名密码看配置文件的用户名密码 1 实例化配置类注解 import org.s ...
- 精准测试白皮书v3.0-2019最新版
现代社会是建立在各种以计算机为基石的软件技术基础之上的.随着日新月异的需求变化,软件系统越来越复杂.很多人觉得软件开发才是重要环节,但实际上,无法对大型软件进行有效的质量把控,就无法真正构建与维护大型 ...