shell变量

255 阅读2分钟

什么是变量

以固定名称存放,可能会发生变化的值

  • 提交脚本对任务需求,运行环境变化的适应能力
  • 方便在脚本中重复使用

变量分类

自定义变量

  • 定义/赋值变量 变量名=变量值
[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是失败

位置变量

在执行脚本时提供的命令行参数 11、2、$3...(第一个参数、第二个参数、第三个参数)

变量扩展

引号与反撇号

  • 双引号:将$视为变量
  • 单引号:将$视为普通字符
  • 反撇号:将命令的执行输出作为变量值

read输入取值

  • 从read从键盘读入变量完成赋值

    格式: read [-p '提示信息'] 变量名

  • 终端信息

    -stty -echo:关闭终端输出

    -stty echo:恢复终端输出

变量的作用范围

  • 局部变量 只在当前shell环境中有效,在其他shell环境无法使用
  • 全局变量 在所有shell环境中均有效,使用export可将局部变量声明为全局变量
a=100
export  a   //将已有变量发布为全局效果
export  b=200  //创建全局变量
export  -n  a  //将全局变量恢复成局部变量