变量的定义
变量即在程序运行过程中它的值是允许改变的量
变量是用一串固定的字符来表示不固定的值的一种方法
变量是一种方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息
在shell中变量时不能永久保存在系统中的,必须在文件中声明
变量的种类
环境级 export a=1 在系统关闭后就会失效
用户级 vim ~/.bash_profile 系统关闭后依旧生效,但对象只针对与相对应的用户
export a=1
系统级 vim /etc/profile 对系统所有的用户都生效
export a=1
直接给a赋值
直接打印 可以出现a的值
使用. test.sh也可以出现a的值
这种暂时的赋值在进程结束后会失效
用户个人环境变量配置
ls -a 可以查看到环境的变量配置文件
编辑用户的环境配置文件
添加 export a=1
source .bash_profile 使得命令立刻生效
退出当前环境重新进入依旧可以查看a的值
但当我们退出切换到用户student登陆时,这时在查看a的值便无法查看了(因为改变的是用户root的环境变量,与student用户无关)
修改全局环境变量
vim /etc/profile
给a赋值为10
使得配置立即生效
用户root的环境变量值为5
切换用户到student(不切换环境变量)
su student
student会依旧使用root的环境变量
切换用户(切换环境变量)
su - studnet
那root用户的全局环境变量配置文件和个人环境变量配置文件该读取那个呢?
其实两个时都读取的,先读取全局变量的环境,再读取个人的环境变量,所以使用的a的环境变量的值为5
变量名称的规范
变量名称中通常包括大小写字母,数字,下划线(不是必须)
变量名称格式
WESTOS_LINUX
Westos_Linux
westos_Linux
\转译单串连续的字符
""(弱引)不能引用 !,`,\,!,$(批量转译“”中出现的字符)
‘’(强引,批量转译‘’中出现的字符)
${}变量声明
eg:
a=1
echo $ab
echo ${a}b
变量值传递
$1 脚本后的第一串字符串
$2 脚本中的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的个数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 4 ”(只输入一串字符串)
$@ 脚本后跟的所有字符串,模式为“ 1 ” “ 2 ” “ 3 ” “ 4 ”(输入了四串字符串)
$$ 脚本后跟进程id
sh cheng.sh cheng1 cheng2 cheng3后跟三个字符串
∗
与
*与
∗与@的区别
$*只执行因此命令一次性打印字符串“1 2 3 4”
$@执行四次命令 “1” “2” “3” “4”,调用了四次字符串
脚本交互
函数
使用函数实现三个模块Delete,Create,Exit
Create模块用户实现每次创建后可以继续新建用户,若用户以存在则提示该用户以存在
Delete模块实现删除用户,若用户不存在则提示该用户不存在并直接返回选择函数
Exit模块实现退出
选择模块中添加三个模块的函数。
#!/bin/bash
Create()
{
echo ""
read -p "Please Input Usename You Want to Create:" Username
id $Username &> /dev/null && {
echo -e "\nUser exist!!!\n"
read -p "If You Want To Go On Creating Action[(Y/y)]:" Choose
[ "$Choose" == "Y" -o "$Choose" == y ] && {
Create
} || {
echo ""
}
} || {
useradd $Username &> /dev/null
echo ""
read -s -p "Please Input User's PassWord:" Password
passwd $Username &>/dev/null <<-EOF
$Password
$Password
EOF
echo ""
echo -e "\nUser $Username Create Success!"
}
}
Delete()
{
echo ""
read -p "Please Input Usename You Want to Delete:" Username
id $Username &> /dev/null && {
userdel -r $Username
echo -e "\nUser $Username Delete Success!"
} || {
echo -e "\nUser $Username is not exist!!!\n"
read -p "If You Want To Go On Deleting Action[(Y/y)]:" Choose
[ "$Choose" == "Y" -o "$Choose" == y ] && {
Delete
}
}
}
USERCMD()
{
echo -e "\n[C]reate [D]elete [E]xit\n"
read -p "Please Input Your Action:" Action
[ "$Action" == "c" -o "$Action" == "C" ] && {
Create
USERCMD
}
[ "$Action" == "D" -o "$Action" == "d" ] && {
Delete
USERCMD
}
[ "$Action" == "e" -o "$Action" == "E" ] && {
echo -e "\nByeBye\n"
exit 0
}
echo -e "\nInput Wrong Character\n" && USERCMD
}
USERCMD
数组
a类型的值为1,2,3,4
输出a[0]为1
输出a[1]为2
代表一类型的值