条件测试语句
[ 条件表达式 ]。两边均有空格,条件测试语句不能配合管道符。
文件测试所用的参数
逻辑测试语句参数(返回0则成功,返回1则失败):
逻辑与(&&):当前面的命令执行成功后才会执行后面的命令;
逻辑或(||):当前面的命令执行失败后才会执行后面的命令;
逻辑非(!):条件测试中的判断结果取反;
可用的整数比较运算符
常见的字符串比较运算符
流程控制语句
if语句
单分支:if…then…fi
双分支:if…then…else…fi
多分支:if…then…elif…then…else…fi
/dev/null:被称作Linux黑洞的文件,把输出重定向到这个文件等同于删除数据,让用户的屏幕窗口保持简洁。
for循环
for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行处理。
while循环
若条件为真就继续执行,反之跳出循环。
实例:用多分支if语句配合while条件循环语句编写猜数字的小游戏脚本。
vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000) #使用$RANDOM变量来调取出一个随机的数值(范围为0~32767),将这个随机数对1000进行取余操作,并使用expr命令取得其结果
TIMES=0 #创建TIMES变量,用于累计用户猜数字的次数
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true #条件永远为真,循环会无限执行下去,下面会有exit 0语句终止脚本执行
do #循环开始
read -p "请输入您猜测的价格数目:" INT #read读取输入的数值
let TIMES++ #TIMES变量自增1,即猜数字次数累计1次
if [ $INT -eq $PRICE ] ; then #如果输入的数字跟随机生成的数字一致,说明猜对了。(第三行生成的数字不在循环内,因此知道程序结束,生成的数字都是不会变的)
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit 0 #终止脚本执行
elif [ $INT -gt $PRICE ] ; then #输入数字比生成数字高,提示太高
echo "太高了!"
else #兜底,既猜不对数字,又不是比生成数字高,那就是太低了
echo "太低了!"
fi #if语句结束
done #while循环结束
该脚本只能接收数字,如果输入数字以外的字符,脚本就会奔溃并报错,并判断条件一定跳到兜底,输出“太低了”。
case语句
计划任务服务程序
设置服务器的计划任务服务,把周期性、规律性的工作交给系统自动完成。
划任务分为一次性计划任务与长期性计划任务
一次性计划任务:只执行一次,一般用于临时的工作需求。
长期性计划任务:按照设定的时间周期,重复执行用户指定的命令操作。
1.at命令:用于设置一次性计划任务。格式:at [时间]/[参数]。
2.Linux中默认启用的crond服务是用来周期性的执行某种任务或等待处理某些事件的一个守护进程。crond服务通过crontab命令来实现。
crontab命令:用于配置周期性计划任务。格式:crontab [选项]。
常用参数:
-e:创建、编辑计划任务;
-l:查看当前计划任务;
-r:删除某条计划任务;
-u:编辑对应用户的计划任务(管理员身份才能用);
使用crond设置任务的参数格式:分 时 日 月 星期 命令,如果有些字段没有设置,则使用星号(*)占位。
使用crond设置任务的参数字段说明