【●】shell变量
一、变量的设置和取消
1.变量
● 常量 固定不变
●以固定名称存放,可能会变化的值
—提高脚本对任务需求、运行环境变化的适应能力
—方便在脚本中重复使用
2.变量的种类
—1.自定义变量,名称可以用数字、字母、下划线,不要以数字开头,不能使用特殊符号。
变量名称=变量的值
a=10 #创建变量
echo $a #调用变量
unset a #取消变量
echo ${a}RMB #使用大括号可以避免混淆
—2. 环境变量,由系统维护,使用时可直接调用,用来设置工作环境只有个别变量用户可以直接修改
USER 当前用户名 HOME 当前用户的家目录 UID 当前用户的ID号
SHELL 当前用户的解释器 HOSTNAME 主机名 PWD 当前位置
PATH 存储命令路径
—3.位置变量与预定义变量
$1 执行脚本时后面跟的第一个位置参数
$2 执行脚本时后面跟的第二个位置参数
$3 执行脚本时后面跟的第三个位置参数
$* 执行脚本时后面跟的所有位置参数
$# 执行脚本时后面跟的所有位置参数的个数
$$ 随机的进程号
$? 判断上一条指令是否成功,0是成功,非0则为失败
◆ 编写脚本,创建用户abcd,配置密码1223456(运用变量后可多次运用$)
[root@svr7 opt]# vim test07.sh
useradd $1 #使用位置变量$1,在执行脚本时灵活定义用户名
echo "$2" | passwd --stdin $1 #使用位置变量$2定义密码
[root@svr7 opt]# bash test07.sh xyz 123 #执行脚本时,脚本名字后面 跟的第一个位置参数是xyz,在脚本中作为要创建的用户名,第二个位置参数是 123,在脚本中作为配置的密码
◆ —env 可以显示所有的环境变量
env | grep HOSTNAME #可以配合grep搜索
—set 显示所有的变量
abcd=8888
set | grep abcd #可以配合grep搜索
3.变量的扩展知识
● 引号与反撇号
—“” 双引号 界定范围
—‘’ 单引号 界定范围 屏蔽特殊符号功能
— `` 反撇号 可以获取命令的执行结果,或者使用$()可以实现相同效果
● 使用read指令,以交互式使用脚本
#!/bin/bash
read -p "请输入用户名称:" n #使用变量n存储用户敲的名字
useradd $n
read -p "请输入密码:" m #使用变量m存储用户敲的密码
echo "$m" | passwd --stdin $n
stty -echo 屏蔽回显
stty echo 恢复回显
#!/bin/bash
read -p "请输入用户名称:" n
useradd $n
stty -echo
read -p "请输入密码:" m
stty echo
echo "$m" | passwd --stdin $n
●使用export发布全局变量
用户-----bash------bash
局部变量
a=10 #创建变量,默认变量是局部变量
export a #将已有的局部变量发布为全局变量
export b=20 #创建全局变量
export -n b #将全局变量恢复为局部变量
注意,测试时要在父进程创建变量,然后可以执行bash进入子进程测试效果,如果要返回父进程要执行exit指令
pstree | grep bash 重新打开一个个窗口查看共打开几个进程