目录
Bash 的变量和运算符
什么是变量
- 在定义变量时,有一些规则需要遵守:
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
- 在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
- 变量用等号连接值,等号左右两侧不能有空格。
- 变量的值如果有空格,需要使用单引号或双引号包括。
- 如:“test="hello world!"”。其中双引号括起来的内容“$”、“\”和反引号都拥有特殊含义,而单引号括起来的内容都是普通字符。
- 在变量的值中,可以使用“\”转义符。
- 如果需要增加变量的值,那么可以进行变量值的叠加。
- 不过变量需要用双引号包含"$变量名"或用${变量名}包含变量名。例如:
[root@localhost ~]# test=123
[root@localhost ~]# test="$test"456
[root@localhost ~]# echo $test
123456
#叠加变量 test,变量值变成了 123456
[root@localhost ~]# test=${test}789
[root@localhost ~]# echo $test
123456789
#再叠加变量 test,变量值编程了 123456789
- 变量值的叠加可以使用两种格式:“$变量名”或${变量名}
- 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。例如:
[root@localhost ~]# test=$(date)
[root@localhost ~]# echo $test
2018 年 10 月 21 日 星期一 20:27:50 CST
- 环境变量名建议大写,便于区分。
变量的分类
- 用户自定义变量:这种变量是最常见的变量,由用户自由定义变量名和变量的值。
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据,比如当前登录用户,用户的家目录,命令的提示符等。不是太好理解吧,那么大家还记得在 Windows 中,同一台电脑可以有多个用户登录,而且每个用户都可以定义自己的桌面样式和分辨率,这些其实就是Windows 的操作环境,可以当做是 Windows 的环境变量来理解。环境变量的变量名可以自由定义,但是一般对系统起作用的环境变量的变量名是系统预先设定好的。
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
- 预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
用户自定义变量
变量定义
[root@localhost ~]# 2name="shen chao"
-bash: 2name=shen chao: command not found
#变量名不能用数字开头
[root@localhost ~]# name = "shenchao"
-bash: name: command not found
#等号左右两侧不能有空格
[root@localhost ~]# name=shen chao
-bash: chao: command not found
#变量的值如果有空格,必须用引号包含
变量调用
[root@localhost ~]# name="shen chao"
#定义变量 name
[root@localhost ~]# echo $name
shen chao
#输出变量 name 的值
变量查看
[root@localhost ~]# set [选项]
- 选项:
- -u: 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
- -x: 如果设定此选项,在命令执行之前,会把命令先输出一次
[root@localhost ~]# set
BASH=/bin/bash
…省略部分输出…
name='shen chao'
#直接使用 set 命令,会查询系统中所有的变量,包含用户自定义变量和环境变量
[root@localhost ~]# set -u
[root@localhost ~]# echo $file
-bash: file: unbound variable
#当设置了-u 选项后,如果调用没有设定的变量会有报错。默认是没有任何输出的。
[root@localhost ~]# set -x
[root@localhost ~]# ls
+ ls --color=auto
anaconda-ks.cfg install.log install.log.syslog sh tdir test testfile
#如果设定了-x 选项,会在每个命令执行之前,先把命令输出一次
变量删除
[root@localhost ~]# unset 变量名
【注】:参考尚硅谷沈超老师教程