• Shell(Bash)用户自定义变量使用方法详解

    用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户自由定义的。

    那么,该如何定义变量呢?很简单,只需执行"变量名=变量值"命令即可,不过要遵守变量定义规则。例如:

    [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 命令输出变量的值时才需要在变量名前加入符号,只要需要调用变量的值,就需要在变量名前加入"$"符号。

    变量查看

    我们可以通过 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选项,则会在每条命令执行之前先把命令输出一次

    set 命令的选项和功能众多,不过我们更常用的还是使用 set 命令查看变量。

    变量删除

    要想删除自定义变量,可以使用 unset 命令。命令格式如下:

    [root@localhost ~]# unset 变量名

    这里只是清空变量,而不是调用变量的值,所以在变量名前不需要加入符号。举个例子:

    [root@localhost ~]# unset name
    #删除name变量

    这条命令执行之后,再查询变量,就会发现这个变量已经为空了。

更多...

加载中...