什么是变量
以固定名称存放,可能会发生变化的值
- 提交脚本对任务需求,运行环境变化的适应能力
- 方便在脚本中重复使用
变量分类
自定义变量
- 定义/赋值变量 变量名=变量值
[root~]# x=12
[root~]# y=13
- 使用变量 echo $变量名
[root~]# x=10
[root~]# echo $x
- 取消变量 unset 变量名
[root~]# unset x
环境变量
由系统提前定义好,使用时直接调用
- 配置文件 /etc/profile /root/.bash_profile
- 相关操作 -env:列出所有坏境 -set:列出所有变量
- 常见环境变量
PWD 当前位置
PATH 记录命令程序的路径
USER 当前用户名
HOSTNAME 主机名
UID 当前用户的id号
SHELL 当前用户的解释器
HOST 当前用户的家目录
PS1 一级提示符
PS2 二级提示符
预定义变量
- 用来保存脚本程序的执行信息
- 不能直接使用这些变量
- 不能直接为这些变量赋值
$1 执行脚本时后面跟的第1个位置参数
$2 执行脚本时后面跟的第2个位置参数
$3 执行脚本时后面跟的第3个位置参数
$* 所有的位置参数
$# 位置参数的个数
$$ 随机的进程号
$? 判断上一条指令是否成功,0是成功,非0是失败
位置变量
在执行脚本时提供的命令行参数 2、$3...(第一个参数、第二个参数、第三个参数)
变量扩展
引号与反撇号
- 双引号:将$视为变量
- 单引号:将$视为普通字符
- 反撇号:将命令的执行输出作为变量值
read输入取值
-
从read从键盘读入变量完成赋值
格式: read [-p '提示信息'] 变量名
-
终端信息
-stty -echo:关闭终端输出
-stty echo:恢复终端输出
变量的作用范围
- 局部变量 只在当前shell环境中有效,在其他shell环境无法使用
- 全局变量 在所有shell环境中均有效,使用export可将局部变量声明为全局变量
a=100
export a //将已有变量发布为全局效果
export b=200 //创建全局变量
export -n a //将全局变量恢复成局部变量