shell 编程之变量
程序员文章站
2022-06-26 16:21:30
...
改文章根据慕课网Tony老师的视频(https://www.imooc.com/video/6511)所做笔记。在这里感谢Tony老师。
1.变量的命名规则
a.变量名必须以字母或者下划线开始,由字母、数字、下划线组成
b.变量名的长度不得超过255个字符
c.变量名在有效范围内(一定的作用域内)必须是唯一的
d.在bash中,变量默认类型都是字符串型(这一点让人很郁闷)
2.变量的分类
a.用户自定义的变量,该变量的名称,作用都是你自己定义的,向脚本中传值的。
b.环境变量:这种变量就中主要保存的是和系统环境相关的数据。该变量有两种情况,可以自定义的和固定的:1.**变量可以自定义**,2.**对系统生效的环境变量名和变量作用是固定的**。
c.位置参数变量:这种变量主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用是固定的(其实位置参数变量就是预定义变量)。
d.预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量的作用也是固定的(我们所能更改的是 变量的值,变量名称和作用是固定的)。
3.用户自定义变量
格式: 变量名=变量值 (注意:等号两边不能加 空格)
例如:x=5
name="jie cuo"
变量的调用:
使用echo调用(实际变量的调用有多种方法):
echo $x
echo $name
变量的叠加:
变量的叠加有三种方法,一种是将两个变量叠加;一种是使用双引号;另一种是使用花括号:
a="hello"
b=" world"
a=$a$b
例子:x=123
x="$x"456
或者使用{}
x=${x}789
echo $x
结果为:123456789
变量的查看
set [选项] :查询系统下所有已经生效的变量
-u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
set -u 这个命令的作用场景:比如你调用一个变量a
echo $a
如果输出是一个空值,这是有两种情况,1.已经定义变量a了,给它赋的值就为 空值。2.根本没有该变量,所以输出就没有值,那么该如何判断呢?就使用 set -u,然后再调用变量的值,如果没有定义该变量,就会报错,如果不 set -u,默认是不会提示报错的。
变量的删除:
unset 变量名
注意是变量名,是指将整个变量都删除,而不是只删除变量中的值。
4.环境变量
环境变量与用户自定义变量之间的区别?
1.环境变量是全局变量。
2.用户自定义变量是局部变量。
也就是说,用户自定义的变量只有在当前shell中生效,而环境变量在当前shell和这个shell的所有子shell中生效。
什么是当前shell,可以理解为用户当前操作的界面就是当前shell。那么如何进入子shell中呢?输入命令 bash,就可以进入一个子shell。
环境变量主要分为用户自定义的 和 对系统生效的环境变量名和变量作用是固定的变量。
我们主要要学习的就是环境变量汇总对系统生效的环境变量名和变量作用是固定的变量。
首先,我们认识一下用户自定义的环境变量。
格式:
export 变量名=变量值
或者
变量名=变量值
用户可以自定义变量了,那么如何查看呢?
set 查看所有变量
env 查看环境变量
系统当中常用的环境变量:
HOSTNAME:主机名
SHELL:当前的shell
TERM:终端环境
HISTSIZE:历史命令条数
SSH_CLIENT:当前操作环境是用ssh连接的,这里记录了客户端ip
SSH_TTY:ssh链接的终端时pts/1
USER:当前登录的用户
需要着重学习的变量:
1.PATH 环境变量,它是系统查找命令的路径。
echo $PATH
查看PATH环境变量
PATH="$PATH":/root/sh 增加PATH变量的值,将/root/sh添加到PATH环境变量中
2.PS1变量,命令提示符设置
其中\u 表示当前用户,\h表示主机名缩写,中间空格没作用及,\W] 表示当前路径下的最后一个目录,$表示是普通用户还是root超级用户
\d:显示日期,格式为“星期 月 日”
\H:显示完整的主机名
\t:显示24小时制时间,格式为:“HH:MM:SS”
\A:显示24小时制时间,格式为:“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\$:提示符,如果是root用户,则显示“#”,如果是普通用户,则显示为“$”
命令提示符可以按照上面的格式将各个变量进行修改。