首页 > 系统相关 >02-Shell变量

02-Shell变量

时间:2023-10-06 22:14:06浏览次数:36  
标签:02 Shell 变量 自定义 sh 全局变量 环境变量

1.Shell变量

1.1 Shell变量的介绍

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

1.2 变量类型

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

2.系统环境变量

2.1 介绍

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

2.2 Shell的配置文件分类

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

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

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

2.3 环境变量分类

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

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

2.3.1 查看当前Shell系统环境变量

查看命令

env

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

命令

set

2.3.2 常用系统环境变量

变量名称 含义
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

2.3.3 环境变量输出演示

PATH:不同路径之间使用:进行分割


3.自定义变量

3.1 自定义变量介绍

就是自己定义的变量

3.1.1 分类

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

3.2 自定义局部变量

3.2.1 介绍

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

3.2.2 变量定义

定义语法

var_name=value

变量定义规则

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

3.2.3 变量值查询

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


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

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

3.2.4 变量删除

unset var_name

3.3 自定义常量

3.3.1 介绍

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

3.3.2 定义

readonly var_name

3.4 自定义全局变量

3.4.1 父子Shell环境介绍

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

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

3.4.2 自定义全局变量介绍

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

3.4.3 自定义全局变量语法

export var_name1 var_name2

3.4.4 案例需求

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

3.4.5 案例实现步骤

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

  2. 编辑demo2.sh

    命令1:定义全局变量VAR4

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

  3. 编辑demo3.sh

    输出全局变量VAR4

  4. 执行demo2.sh脚本文件

3.4.6 案例演示

  1. 创建demo2.sh和demo3.sh文件
touch demo2.sh
touch demo3.sh
  1. 编辑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环境中不可用

4. 特殊变量

标签:02,Shell,变量,自定义,sh,全局变量,环境变量
From: https://www.cnblogs.com/Icer-newer/p/17745011.html

相关文章

  • 2022 CCPC 威海 ACEGJ
    2022ChinaCollegiateProgrammingContest(CCPC)WeihaiSiteACEGJA.Dunai思维题意:之前有\(n\)场比赛,有\(n\)个冠军队伍,每个队伍5个人。接下来给你\(m\)个即将参加比赛的人和所在位置(1~5)。问你在保证一个队伍至少有一个冠军在,并且每个位置都要有人。问最多能组成......
  • 02_用户及权限管理
    1.用户管理#新增用户useraddroot@bk:~/ckh#idrootuid=0(root)gid=0(root)groups=0(root)root@bk:~/ckh#root@bk:~/ckh#useraddadminroot@bk:~/ckh#idadminuid=1002(admin)gid=1003(admin)groups=1003(admin)#切换用户su-用户名root@bk:~#whoamiroot......
  • 2023.10.6 若干杂题
    P1552[APIO2012]派遣每个点作为管理者,只需要计算其子树内,最多有多少个人加起来不大于\(M\),考虑维护前\(k\)小的元素。可以使用左偏树合并。然而其实可以平衡树合并,每次在平衡树上二分。P2685[TJOI2012]桥首先,Boss镇守的桥一定是最短路上的边,使得我们不得不改变线路。......
  • SDU Open 2023-F、树上随机游走
    SDUOpen2023-F、树上随机游走题目:https://codeforces.com/group/2altttv8oU/contest/477604/problem/F题意:给定一棵\(n\)个点的无根树,在树上随机游走(即每次会从当前点等概率地走到一个相邻结点),\(q\)次询问,每次问从\(s\)走到\(t\)的期望步数。\(1\leqn,q\leq2\times......
  • Julia的变量和数据类型
    变量Julia作为动态语言,它的变量可以随时被定义为任意类型。变量名命名规则变量名需以字母或者下划线开头变量名区分大小写类名要使用大驼峰命名法函数名和宏名使用全小写修改参数的函数结尾使用叹号!此外还可以使用Unicode字符来命名,这其中就包括各国文字,例如中文、希......
  • 2023年石门中学NOIP模拟测试(2023.10.6)
    原题大战T1范围\(n\leq10^{14}\)。不用动脑,打个表找找规律。考虑一个数\(x\),在\(1\simn\)中包含\(x\)这个约数的个数为\(\left\lfloor\dfrac{n}{x}\right\rfloor\),那么既然是异或,只需要判断奇偶性算贡献即可。然后你发现这玩意显然可以整除分块,算连续一段贡献,只需......
  • 01-Shell脚本入门
    1.介绍1.1疑问linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等?答:使用linux的内核操作计算机的硬件1.2Shell介绍通过编写Shell命令发送给linux内核去执行,操作的就是计算机硬件.所以Shell命令是用户操作计算机硬件的桥梁Shell是命令,类似于windows系统Dos命令......
  • 2023牛客国庆集训派对day8/牛客2020年暑期多校day8
    Preface妈的多校都是些什么题啊,一场比赛后三小时全程啥也干不了只能划划水,最后开榜就看手速排名,给他唐完了这场开场和前期久违地顺利,按难度开了三道签到后队里讨论了下秒出了A的正解我爬上去摸了会虽然nt错误频发WA了两发,但后面还是成功抢到了A题的一血,同时徐神和祁神坐在下面......
  • linux02
    linux实战安装集群 hostnamectl 修改主机名  安装ifconfig ......
  • SDU Open 2023-H、几何、积分、单调栈维护上凸壳
    SDUOpen2023-H、几何、积分、单调栈维护上凸壳题目:https://codeforces.com/gym/104324/problem/H题意:有\(n\)个信号基站,你在边玩手机边走路,手机会自动连接到最近的基站。单位时间花费的流量是到基站距离的平方,现在从起点沿着直线走到终点,并且走的都是横平竖直的直线,单位时间......