Shell脚本入门:环境变量和自定义变量

Shell变量:环境变量

目标

1、理解什么是系统环境变量?

2、掌握常用的系统环境变量都有哪些?

Shell变量的介绍

变量用于存储管理临时的数据, 这些数据都是在运行内存中的.

变量类型

  1. 系统环境变量
  2. 自定义变量
  3. 特殊符号变量

系统环境变量

介绍

是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用

Shell的配置文件分类

1.全局配置文件
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc

2.个人配置文件
当前用户/.bash_profile
当前用户/.bashrc

一般情况下,我们都是直接针对全局配置进行操作。

环境变量分类

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

系统级环境变量:Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用, 全局共享
用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用, 登录用户使用

查看当前Shell系统环境变量

查看命令

env

效果
在这里插入图片描述

查看Shell变量(系统环境变量+自定义变量+函数)

命令

set

效果
在这里插入图片描述

常用系统环境变量

变量名称含义
PATH与windows环境变量PATH功能一样,设置命令的搜索路径,以冒号为分割
HOME当前用户主目录:/root
SHELL当前shell解析器类型:/bin/bash
HISTFILE显示当前用户执行命令的历史列表文件:/root/.bash_history
PWD显示当前所在路径:/root
OLDPWD显示之前的路径
HOSTNAME显示当前主机名:itheima
HOSTTYPE显示主机的架构,是i386、i686、还是x86、x64等:x86_64
LANG设置当前系统语言环境:zh_CN.UTF-8

环境变量输出演示

在这里插入图片描述

小结

1.系统环境变量是什么?

是系统提供的环境变量, 通过加载Shell配置文件中变量数据共享给Shell程序使用

2.环境变量的分类?

系统级环境变量, Shell环境加载全局配置文件中定义的变量

用户级环境变量, Shell环境加载个人配置文件中定义的变量

3.env与set区别

env用于查看系统环境变量

set用于查看系统环境变量+自定义变量+函数

4.常用环境变量

变量名称含义
PATH命令搜索的目录路径, 与windows的环境变量PATH功能一样
LANG查询系统的字符集
HISTFILE查询当前用户执行命令的历史列表

Shell变量:自定义变量

目标

理解自定义变量的分类

能够自定义变量进行增\删\改\查

自定义变量介绍

就是自己定义的变量

分类

  1. 自定义局部变量
  2. 自定义常量
  3. 自定义全局变量

自定义局部变量

介绍

就是定义在一个脚本文件中的变量, 只能在这个脚本文件中使用的变量, 就是局部变量

定义与使用

定义语法

var_name=value

变量定义规则

  1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头
  2. 等号两侧不能有空格
  3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算
  4. 变量的值如果有空格, 必须使用双引号括起来
  5. 不能使用Shell的关键字作为变量名称

演示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zwDJqckT-1603553192500)(assets/image-20200608170754770.png)]

查询变量值语法

# 语法1: 直接使用变量名查询
$var_name
# 语法2: 使用花括号
${var_name}
# 区别: 花括号方式适合拼接字符串

演示
在这里插入图片描述

注意: 如果"My name is ${var2}Style"$var2 不带花括号, 系统会认为获取$var2Style 变量数据, 这个变量不存在就获取不到数据,执行效果如下
在这里插入图片描述

结论: 推荐大家使用花括号才是编程好习惯

变量删除

语法

unset var_name

演示
在这里插入图片描述

自定义常量

介绍

就是变量设置值以后不可以修改的变量叫常量, 也叫只读变量

语法

readonly var_name

演示
在这里插入图片描述

自定义常量

自定义全局变量

父子Shell环境介绍

例如: 有2个Shell脚本文件 A.sh 和 B.sh

如果 在A.sh脚本文件中执行了B.sh脚本文件, 那么A.sh就是父Shell环境, B.sh就是子Shell环境

自定义全局变量介绍

就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用

自定义全局变量语法

export var_name1 var_name2

案例需求

测试全局变量在子Shell中是否可用, 在父Shell中是否可用

案例实现步骤

  1. 创建2个脚本文件 demo2.sh 和 demo3.sh

  2. 编辑demo2.sh

    命令1:定义全局变量VAR4

    命令2: 执行demo3.sh脚本文件

  3. 编辑demo3.sh

    输出全局变量VAR4

  4. 执行demo2.sh脚本文件

案例演示

  1. 创建demo2.sh和demo3.sh文件
    在这里插入图片描述
  2. 编辑demo2.sh, 里面定义变量VAR4并设置为全局, 并里面执行demo3.sh脚本文件
vim demo2.sh

在这里插入图片描述
3. 编辑demo3.sh, 里面打印VAR4

vim demo3.sh

在这里插入图片描述
4. 执行脚本文件demo2.sh, 观察打印VAR4效果
在这里插入图片描述
5. 执行脚本文件后, 在交互式Shell环境打印VAR4, 观察打印VAR4效果
在这里插入图片描述

结论

全局变量在当前Shell环境与子Shell环境中可用, 父Shell环境中不可用

小结

自定义变量的分类

自定义局部变量: 就是在一个脚本文件内部使用 var_name=value

自定义常量: 不可以修改值的变量, readonly var_name

自定义全局变量: 设置变量在当前脚本文件中与子Shell环境可以使用的变量, export var_name

自定义变量进行增\删\改\查

定义和修改: var_name=value

查询:${var_name} 或 $var_name

删除: unset var_name


版权声明:本文为m0_51340928原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。