Shell(Bash)用户自定义变量 图片看不了?点击切换HTTP 返回上层
那么,该如何定义变量呢?很简单,只需执行"变量名=变量值"命令即可,不过要遵守变量定义规则。例如:
[root@localhost ~]# name="C biancheng"
变量的定义就是这么简单,但是如果不遵守变量定义规则,就会报错。比如:
[root@localhost ~]# 2name="C biancheng"
-bash: 2name=shen chao: command not found
#变量名不能以数字开头
[root@localhost ~]# name = "C biancheng"
-bash: name: command not found
#左右两侧不能有空格
[root@localhost ~]# name=C baincheng
-bash: chao: command not found
#变量的值如果有空格,必须用引号包含
我们再来看如何进行变量叠加。例如:
[root@localhost ~]# aa=123
#定义变量aa的值是123
[root@localhost ~]# aa="$aa"456
#重复定义变量aa的值是源aa的值加上456
[root@localhost ~]# echo $aa
123456
#aa的值已经变成了123456
[root@localhost ~]# aa=${aa}789
[root@localhost ~]# echo $aa
123456789
#在进行变量叠加时也可以使用${变量名}格式
在定义变量时,也可以使用特殊字符,如双引号、单引号、反引号、小括号、大括号等。
变量调用
当我们需要提取变量中的内容时,需要在变量名之前加入"$"符号。也就是说,我们需要调用变量时,需要在变量名之前加入"$"符号。那么最简单的变量调用就是通过 echo 命令输出变量的值。命令如下:
[root@localhost ~]# name="C biancheng"
#定义变量name
[root@localhost ~]# echo $name
C biancheng
#输出变量name的值
变量查看
我们可以通过 echo 命令查询已经设定的变量的值,这种查询是已知变量名查询变量值。但是如果我不知道变量名,那么可以查询系统中已经存在的变量吗?当然可以,只需使用 set 命令即可。set 命令可以用来查看系统中的所有变量(用户自定义变量和环境变量)和设定 Shell 的执行环境。命令格式如下:
[root@localhost ~]# set [选项]
选项:- -u:如果设定此选项,则在调用未声明的变量时会报错(默认无任何提示);
- -x:如果设定此选项,则在命令执行之前会先把命令输出一次;
举几个例子:
[root@localhost ~]# set
BASH=/bin/bash
...省略部分输出...
name='C biancheng'
#直接使用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选项,则会在每条命令执行之前先把命令输出一次
变量删除
要想删除自定义变量,可以使用 unset 命令。命令格式如下:[root@localhost ~]# unset 变量名
这里只是清空变量,而不是调用变量的值,所以在变量名前不需要加入符号。举个例子:
[root@localhost ~]# unset name
#删除name变量