Shell基础之变量的命名规则、分类及自定义变量

目录

Bash 的变量和运算符

什么是变量

变量的分类

用户自定义变量

变量定义

变量调用

变量查看

变量删除


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 变量名

【注】:参考尚硅谷沈超老师教程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值