|NO.Z.00045|——————————|LinuxShell|——|Linux&Shell$变量.V02|——|变量分类|
一、变量分类
### --- 用户自定义变量:
~~~ 这种变量是最常见的变量,由用户自由定义变量名和变量的值。
### --- 环境变量:
~~~ 这种变量中主要保存的是和系统操作环境相关的数据,
~~~ 比如当前登录用户,用户的家目录,命令的提示符等。
~~~ 不是太好理解吧,那么大家还记得在 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
### --- 变量调用
~~~ 定义变量 name
[root@localhost ~]# name="shen chao"
~~~ 输出变量 name 的值
[root@localhost ~]# echo $name
shen chao
### --- 变量查看
~~~ # 选项:
~~~ -u:如果设定此选项,调用未声明变量时会报错(默认无任何提示)
~~~ -x:如果设定此选项,在命令执行之前,会把命令先输出一次
[root@localhost ~]# set [选项]
~~~ 直接使用 set 命令,会查询系统中所有的变量,包含用户自定义变量和环境变量
[root@localhost ~]# set
BASH=/bin/bash
~~~ …省略部分输出…
name='shen chao'
~~~ 当设置了-u 选项后,如果调用没有设定的变量会有报错。默认是没有任何输出的。
[root@localhost ~]# set -u
[root@localhost ~]# echo $file
-bash: file: unbound variable
~~~ 如果设定了-x 选项,会在每个命令执行之前,先把命令输出一次
[root@localhost ~]# set -x
[root@localhost ~]# ls
+ ls --color=auto
anaconda-ks.cfg install.log install.log.syslog sh tdir test testfile
### --- 变量删除
[root@localhost ~]# unset 变量名
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv008-shell
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」