4.2 编写Shell脚本
该脚本中:第一行脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行改脚本
第二行的注释信息(#)是对脚本功能和某些命令的介绍信息。
第三四行,可执行语句。
运行脚本的方法
1)bash解释器命令直接执行
2)输入完整的路径。(此时需要为脚本文件增加执行权限)u->a 表示所有用户
4.2.2 接受用户的参数
$0 :对应的是当前Shell脚本程序的名称,
$#:对应的是总共有几个参数
$*: 对应的是所有位置的参数值
$? :对应的是显示上一次命令的执行返回值
4.2.3判断用户的参数 :[ 条件表达式]
使用文件测试语句 判断 /etc//fstab 是否为一个目录类型的文件,然后通过Shell解释器的$?变量显示上一条命令执行后的返回值。如果返回0,则目录存在,如果返回非零,则目录不存在
逻辑语句对测试结果进行分析:&& ||
[ ! $USER=root ] && echo “root” || echo “user”;
整数比较运算符
free命令:获取当前系统正在使用及可用的内存量信息
1)free -m :查看内存使用量情况
2)grep Men:过滤出剩余内存量的行
3)awk ‘{ print $4 }’ 只保留第四行
4) FreeMem=‘语句’ 把语句内执行的结果赋值给变量。
> 4.3 流程控制语句
4.3.1 if条件测试语句
双分支的if条件语句:
-c 参数规定尝试的次数,
-i 定义每个数据包的发送间隔
-W 定义等待时间
if语句的多分支结构
read :用来读取用户输入信息的命令,把接收到的信息赋值给后面的指定变量
-p :参数用于向用户显示一定的提示信息
**
4.3.2for条件循环语句
**
for循环语句允许脚本一次读取多个信息,然后逐一对信息进行操作处理
read 读取用户输入的密码值,赋值给PASSWD
-p向用户显示一段信息
用&?判断命令是否执行成功,判断用户是否已经存在
例:创建用户名并设置密码
time=1
while [ $time -le 5 ]
do
echo "please input NO$time users info:"
read -p "enter user:" USER
id $USER &> /dev/null
if [ $? -eq 0 ];then //判断上行操作返回值是否等于0
echo "user $USER yi cun zai "
else
read -p "enter password:" PASSWD
useradd $USER &> /dev/null
echo "$PASSWD" | passwd --stdin $USER &> /dev/null
let time++
if [ $? -eq 0 ]; then
echo "user $USER ,chuang jian cheng gong."
else
echo "$USER,chuang jian shi bai! "
fi
fi
done
**
4.3.3 while 条件循环语句
**
&RANDOM 调取一个随机数值
expr 取得其结果
4.3.4case 条件测试语句
case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;如果数据不在所列出的范围内,会去执行星号*) 中定义的默认命令:
4.4 计划任务服务程序
at +时间 ,一次性执行任务
at + -l 查看设置好但未执行的一次性计划任务。
atrm 任务序号 删除某一任务
周期性,有规律的执行任务 :crond服务器
crontab -e :创建、编辑计划任务的命令
crontab -l :查看当前计划任务
crontab -r :删除某条计划任务