1.if控制语句 if then fi if then else fi if then elif then elif then ······ else fi
if 条件表达式
then 命令序列(满足条件才执行) #注意,如果if与then(elif与then)写在同一行,要用;隔开)
fi
if 条件表达式;then
命令序列
fi
if 条件表达式
then 命令序列1(条件满足)
else 命令序列1(条件不满足)
fi
if 条件表达式1
then 命令序列1
elif 条件表达式2
then 命令序列2
······
else 命令序列(以上条件均不满足)
fi
#!/bin/bash # ex.sh
read -p "Enter your score(0-100): " GRADE # read命令
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ;then
echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then echo "$GRADE is pass"
elif [ $GRADE -gt 100 ]
then echo "$GRADE is error"
elif [ $GRADE -lt 0 ]
then echo "$GRADE is error"
else
echo "$GRADE is fail"
fi bash ex.sh sh ex.sh ./ex.sh
2.for控制语句
for 变量名 in 控制列表
do
命令序列
done
# vim name.txt #每行只有一个用户
andy
barry
carl
sjd
#!/bin/bash #user.sh
read -p "Enter the users password: " PASSWD #读取密码,所有用户的密码设置相同
for NAME in `cat name.txt`
do
id $NAME &> /dev/null
if [ $? -eq 0 ]
then
echo "Already exists"
else
useradd $NAME &> /dev/null
echo "$PASSWD" | passwd --stdin $NAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$NAME, create success"
else
echo "$NAME, create failure"
fi
fi
done bash user.sh tail -n 4 /etc/passwd 查看新建用户信息 for NAME in `cat name.txt` 等
价于 for NAME in $(cat name.txt) 或者: EH= $(cat name.txt) for NAME in $EH
3.while控制语句
while 条件表达式
do
命令序列
done
#!/bin/bash #guess.sh
PRICE=$(expr $RANDOM % 1000) #或者 PRICE=`expr $RANDOM % 1000`
TIMES=0
echo "商品实际价格为0~999之间,猜猜看是多少?"
while true
do
read -p "please input the value that you guess: " GU
let TIMES++
if [ $PRICE -eq $GU ]
then echo "congratulations! your guess is accurate which is $PRICE"
echo "the times that you guess is $TIMES"
exit 0
elif [ $GU -gt $PRICE ]
then echo "your guess is bigger"
else
echo "your guess is lower"
fi
done bash guess.sh $RANDOM为环境变量,系统随机产生一个随机数(范围为0~32767)。使用
expr命令取得后面表达式的结果。exit 0 跳出while循环。
4.case控制语句
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
······
*)
默认命令序列
esac
当变量指都不符合以上的模式时,则执行默认命令序列。
#!/bin/bash #exw.sh
read -p "please input a character: " KU
case $KU in
[a-z])
echo "你输入的是字母!"
;;
[0-9])
echo "你输入的是数字!"
;;
*)
echo "你输入的是其它字符!"
esac [a-z] 可以匹配所有大小写字母,并不仅仅只是小写字母,与上面矛盾(经试验证明)
5.计划任务服务程序
在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
一次性计划任务:如今晚11:30开启网站服务 at 时间 设置一次性计划任务 at -l 查看还未执行的一次性计划任务 atrm 任务序号 删除对应的还未执行的一次性计划任务 # at 11:30 systemctl restart httpd Ctrl+D组合键来结束计划任务的编写 这是采用交互的方式来实现一次性计划任务,可以利用管道符来直接实现: echo "systemctl restart httpd" | at 11:30 即可 然后就可以用at -l命令查看
长期性计划任务:如每周一3:25分把/home/luciusvorenus目录打包备份为backup.tar.gz crontab -e 创建、编辑计划任务书 crontab -l 查看计划任务 注意:每一行只能写一条计划任务,且命令必须采用绝对路径的方式书写,如:/uer/bin/rm 可用whereis 或which命令查看