变量
定义:用来临时保存数据,该数据就是可以变化的数据.
使用:变量名=变量值
变量名:临时保存数据的
变量值:临时的可变化的数据
[root@Computer ~]# A=Hello 定义变量A
[root@Computer ~]# echo A 调用变量A,要给钱"$"
A
[root@Computer ~]# echo $A 正确调用
Hello
[root@Computer ~]# echo ${A} 也可以这样调用
Hello
[root@Computer ~]# A=world 更换变量
[root@Computer ~]# echo $A
world
[root@Computer ~]# unset A 取消变量
[root@Computer ~]# echo $A 没有结果
命名规则
- 变量名区分大小写
- 变量名不能包含特殊符号(包含空格的可以用""号括起来)
- 变量名不能以数字开头
- 等号两边不能有任何的空格
- 变量名应该做到见名知意
定义方式
- $A与${A}的区别
- ${A}可以截取变量
- 格式:
${A:开始位:截取数量}
- 例
[root@Computer ~]# A=12345 [root@Computer ~]# echo ${A:2:3} 345
- 命令执行结果赋予给变量
- 格式:变量名=
命令
(反撇号_Tab上面的那个符号) 或 变量名=$(命令)
- 格式:变量名=
交互式定义变量
1.用户自己定义
目的:让用户自己给变量赋值,比较灵活。
语法:read [选项] 变量名
常见选项:
选项 | 作用 |
---|---|
-p | 定义提示用户信息 |
-n | 定义字符数(限制变量值长度) |
-s | 不显示用户输入的内容 |
-t | 定义超时时间,默认单位为秒 |
2.从文件获取变量:输入重定向
[root@Computer ~]# vim ip.txt
[root@Computer ~]# cat ip.txt
10.0.0.1
[root@Computer ~]# read -p "请输入IP地址:" ip < ip.txt
[root@Computer ~]# echo $ip
10.0.0.1
定义有类型的变量(declare)
目的:给变量定义类型
用法:declare 选项 变量名=变量值
常用选项:
选项 | 作用 | 举例 |
---|---|---|
-i | 定义为整数 | declare -i A=123 |
-r | 定义为只读变量 | declare -r B=hello |
-a | 定义普通数组,查看普通数组 | |
-A | 定义关联数组,查看关联数组 | |
-x | 将变量通过环境导出 | declare -x C=123 等于 export C=123 |
变量分类
- 本地变量:当前用户自定义的变量,当前进程有效,其他进程中及当前进程的子进程无效。
- 环境变量:当前进程有效,并且能被子进程调用
env
查看当前用户的环境变量set
查询当前用户的所有变量(临时变量与环境变量)export 变量名=变量值
- 全局变量:全局所有用户都可以调用,新建用户也可以调用
- 解读解读相关配置文件
文件名 | 说明 | 备注 |
---|---|---|
$HOME/.bashrc | 当前用户的bash信息,用户登录时读取 | 定义别名、umask、函数等 |
$HOME/.bash_profile | 当前用户的环境变量,用户登陆时读取 | |
$HOME/.bash_logout | 当前用户退出当前shell时最后读取 | 定义用户退出时执行的程序等 |
/etc/bashrc | 全局bash信息,所有用户均生效 | |
/etc/profile | 全局环境变量信息 | 系统和所有用户都生效 |
说明:以上文件更改后,都要重新source
让其生效或重新登录
- 用户登录系统读取文件顺序
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
/etc/bashrc
$HOME/.bash_logout
- 系统变量(内置bash中的变量):shell本身已经固定好了他的名字和作用
内置变量 | 含义 |
---|---|
$? | 上一条命令的返回状态,为0表示正常,非0表示异常或错误 |
$0 | 当前执行的程序或脚本名 |
$# | 脚本后面接的参数的个数 |
$* | 脚本后面所有的参数,参数当成一个整体输出,每一个变量参数间以空格相隔 |
$@ | 脚本后面所有参数,参数是独立的,也是全部输出 |
$1~$9 | 脚本后面的位置参数,$1表示第一个位置的参数 |
$(10)-$(n) | 扩展位置参数,第10个位置变量必须用{}括起来 |
$$ | 当前所在进程的进程号 |
$! | 后台运行的最后一个进程号 |
!$ | 调用最后一条命令历史中的参数 |