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的桥梁.所以呢,他既是一 ...
随机推荐
- 荣禄[róng lù]
荣禄[róng lù] 百科名片 荣禄 荣禄(1836年4月6日-1903年4月11日)清末大臣,晚清政治家.字仲华,号略园,瓜尔佳氏,满洲正白旗人,出身于世代军官家庭,以荫生晋工部员外郎,后任内务府 ...
- Github的commit规范
参考链接:GIT写出好的 commit message 基本要求 第一行应该少于50个字. 随后是一个空行 第一行题目也可以写成:Fix issue #8976 永远不在 git commit 上增加 ...
- Io性能分析
一.iostat使用说明 1.命令使用方法 使用ixstat –x 1 可以每隔1秒钟采集所有设备的io信息.其中的1类似于使用“vmstat 1”后面的1. 2.命令格式说明 ―――――――――― ...
- Oracle数据库用户名密码【转载自百度经验】
登录到安装oracle数据库服务器的操作系统.打开命令窗口:(我的演示机器是windows) 查看环境变量ORACLE_SID的设置情况: windows: echo %ORACLE_SID% l ...
- 远程登录与文件传输指令——ssh与scp
远程登录指令 ssh ssh 是一个用于登录远程主机并在远程主机上执行命令的程序.ssh 设计的本意在于在一个不确定的网络环境下为两个互不信任的主机提供加密通信功能.在 Linux 桌面版本上,一般内 ...
- FP又称为Monadic Programming
什么是Monad? trait Monad[+T] { def flatMap[U]( f : (T) => Monad[U] ) : Monad[U] def unit(value : B) ...
- Spring JPA 主键
JPA主键生成器和主键生成策略 JPA中创建实体时,需要声明实体的主键及其主键生成策略.我们有一个实体类叫做Email,其主键上声明如下: @Id @Column(name = "EMAIL ...
- JS页面刷新
setTimeout('location.reload()',1000);//页面刷新 1000为延时的毫秒数 1.setInterval() - 间隔指定的毫秒数不停地执行指定的代码. 2.se ...
- 关于RAM与ROM的区别与理解
随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存).它可以随时读写,而且速度很快,通常作为操作系统或其他正在运 ...
- HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...