【shell脚本】如何在不同时间段,执行任务

简介: 基于shell脚本,实现在不同时间段,执行任务。

情景

早上7.30--7.45 执行自动做早餐的任务,中午11.52--12.15 执行做饭任务,下午17:23--17.40 执行自动浇花任务;

核心点

  1. 如何获取当前时间?获取的时间格式如何自定义?
  2. 在不同时间(这个是判断条件),做不同的任务;
  3. 如果编写一个时间区域,并和当前时间比较;

一、shell 获取当前时间、自定义格式

1)2019年 04月 24日 星期五 21:26:35 CST (这里原格式输出当前的时间)

time=$(date)
echo $time1

2)20190424212635 (这里我们自定义数据格式)

#!bin/bash
time=$(date "+%Y%m%d%H%M%S")
echo $time2

解析:%Y 代表 年 即2019;    %m 代表 月 即04;      %d 代表 日 即24;
           %H 代表 小时 即21;    %M代表 分钟 即26;    %S代表 秒 即35;
年,月,日,时,分,秒   的英文意思:Year, month, day, hour, minute, second
3)2019-04-24 21:26:35

#!bin/bash
time=$(date "+%Y-%m-%d %H:%M:%S")
echo $time

注意:date后面有一个空格,时间格式中(变量赋值)前后不要有空格

二、shell判断语句

if 判断语句格式

if  条件
then
 Command
elif 条件
then
 Command
else
 Command
fi   

fi     #别忘了这个结尾

三、shell  判断条件

1)test 命令

  1. if test 1 = 1 ; then echo 'ok'; fi

ok

  1. test 1 = 1 && echo 'ok'

ok
=  等于  应用于:整型或字符串比较 如果在[] 中,只能是字符串

&&   逻辑的 AND 的意思, -a 也是这个意思

  1. test 1 -eq 1 && echo 'ok'

ok
-eq  等于 应用于:整型比较

注意:所有字符 与逻辑运算符直接用“空格”分开,不能连到一起。test 1=1就是错误的!

2)[ ] 表达式
[ 1 -eq 1 ] && echo 'ok'

ok

[ 2 < 1 ] && echo 'ok'

-bash: 2: No such file or directory

[ 2 < 1 ] && echo 'ok'
[ 2 -gt 1 -a 3 -lt 4 ] && echo 'ok'

ok

[ 2 -gt 1 && 3 -lt 4 ] && echo 'ok'

-bash: [: missing `]'

注意:在[ ] 表达式中,常见的>, <需要加转义字符,表示字符串大小比较,以acill码 位置作为比较。
不直接支持<, >运算符,还有逻辑运算符|| , && 它需要用-a[and] –o[or]表示

代码:

#获取当前时间,格式是时分,例如当前是上午8:50,hh=850
hh=`date '+%H%M'`

#早上7.30--7.45 执行自动做早餐的任务
if [ $hh -ge 730 -a $hh -le 745 ]
then
    echo " Morning -- Automatic breakfast "

#中午11.52--12.15 执行做饭任务
elif [ $hh -ge 1152 -a $hh -le 1215 ]
then
    echo " Lunch time -- Cook "
    
#下午17:23--17.40 执行自动浇花任务
elif [ $hh -ge 1723 -a $hh -le 1740 ]
then
    echo "night -- Automatic watering"

#不适合适的时间,不做什么
else
    echo "$hh Not within time "
fi

补充一下判断语句中含义的:

-eq  等于 应用于:整型比较
-ne  不等于 应用于:整型比较
-lt  小于 应用于:整型比较
-gt  大于 应用于:整型比较
-le  小于或等于 应用于:整型比较
-ge  大于或等于 应用于:整型比较
-a  双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o  单方成立(or) 逻辑表达式 –o 逻辑表达式
-z  空字符串
-n  非空字符串

有些任务需要一直执行,这时需要在循环中:

while true;do
    #获取当前时间,格式是时分,例如当前是上午8:50,hh=850
    hh=`date '+%H%M'`
    #早上7.30--7.45 执行自动做早餐的任务
    if [ $hh -ge 730 -a $hh -le 745 ]
    then
        echo " Morning -- Automatic breakfast "
    #中午11.52--12.15 执行做饭任务
    elif [ $hh -ge 1152 -a $hh -le 1215 ]
    then
        echo " Lunch time -- Cook "
    #下午17:23--17.40 执行自动浇花任务
    elif [ $hh -ge 1723 -a $hh -le 1740 ]
    then
        echo "night -- Automatic watering"
    #不适合适的时间,不做什么
    else
        echo "$hh Not within time "
    fi
    sleep 5 #休息5s
    out_time=`date '+%Y-%m-%d-%H:%M'`  #格式:2019-04-24-21:26
    echo "$out_time"
done
相关文章
|
1月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
75 1
|
20天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
42 2
6种方法打造出色的Shell脚本
|
6天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
17 1
|
11天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
30 2
|
24天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
43 6
|
21天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
66 12
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
53 2
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
1月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
25 0