目录
一.Shell脚本变量简介
变量是计算机语言中能储存计算结果或能表示值的抽象概念。保存将来会变化的数据,即使数据变
化,直接调用变量即可。
Shell 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或
系统环境的变化而相应变化。通过使用变量,Shell 程序能够提供更加灵活的功能,适应性更强。
二.shell变量的作用
用来存放系统和用户需要使用的特定参数(值)
-
变量名:使用固定的名称,由系统预设或用户定义
-
变量值:能够根据用户设置、系统环境的变化而变化
三. shell 变量的类型
-
自定义变量:由用户自己定义、修改和使用
-
特殊变量:环境变量,只读变量,位置变量,预定义变量
四. 自定义变量
4.1 自定义变量命令要求
区分大小写
不能使程序中的保留字和内置变量:如:if, for,hostname 命令 a=
只能使用数字、字母及下划线,且不能以数字开头
不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH
大驼峰 StudentFirstName
小驼峰 studentFirstName
下划线 student_name
4.2 定义与查看变量
定义变量:变量名以字母或下划线开头,区分大小写,建议全大写 变量名=变量值
查看变量值:echo $变量名
使用大括号{}定义变量的范围,将变量名分隔出来
删除变量unset
4.3 赋值时使用的引号
- 双引号" ":允许通过$符号引用其他变量值
- 单引号' ':禁止引用其他变量值,$视为普通字符,
- 反撇号``:命令替换,提取命令执行后的输出结果与$( )效果相同
- {}可以分隔变量值
- 定义变量时中间有特殊字符时 比如空格 用单引号或者双引号括起来
双引号与单引号
定义变量时中间有特殊字符
4.4 从键盘输入内容为变量赋值
格式:read 变量名
- read -p "提示内容" 变量名
read 变量名
4.5 变量的运算
4.5.1 整数变量的运算
shell默认只支持整数的运算
运算符:+ 加法
、- 减法
、* 乘法
、/除法
、% 取余
4.5.2 浮点数运算
使用bc计算器
使用awk
五.环境变量
5.1 使用env查看环境变量 
常用环境变量
$USER 表示用户名称
$HOME 表示用户的宿主目录
$LANG 表示语言和字符集
$PWD 表示当前所在工作目录
$PATH 表示可执行用户程序的默认路径
环境变量:
可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量
一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程
一般只在系统配置文件中使用,在脚本中较少使用
5.2 环境变量配置文件
四个系统级的环境配置变量/etc/profile /etc/bashrc 或者(自己家目录中的)/root/.bash_profile/ root/.bashrc .bash_profile /root/.bashrc
/etc/profile
系统每次启动都会自动执行 /etc/profile 文件里的命令,这个文件是对全局有效的(所有的shell环境和用户)
~/.bash_profile ~/.bashrc
不同用户登录系统 会自动执行 自己家目录中的 ~/.bash_profile 文件中的命令,自动执行 ~/.bashrc ~/.bashrc 当前用户每切换一个shell环境都会自动执行
/etc/bashrc
/etc/bashrc 针对所有用户的,用户每切换一个shell环境都会自动执行
5.3 设置变量的作用范围
5.3.1 export命令
默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用。
可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所子shell环境中可以继续使用
5.3.2 将变量添加进配置文件/etc/profile
- 子进程中定义一个变量 退出子进程当前环境,回到父进程变量值不存在
换个终端打开shell
所以,在子进程中定义一个变量 退出子进程当前环境 export变量就会自动消失,换个终端打开shell定义的全局变量 export也会消失所以定义全局变量时通常加入 配置文件/etc/profile
六. 只读变量
变量值不允许修改(重新赋值)的情况 无法使用 unset删除
最快方法重启
七. 位置变量
位置变量也称为位置参数,使用$1、$2、$3、…、$9 、${10}表示
$10:表示位置变量$1后面跟着0
八. 预定义变量
$0脚本本身
$?上一条命令或者脚本执行后返回的状态码
$#脚本后面跟的参数(位置变量)的个数