警告
本文最后更新于 2021-04-04,文中内容可能已过时。
1
2
3
4
5
|
{
{{ range $_, $cron := .CronList }}
{{- $cron }}
{{ end }}
} >> /scripts/docker/merged_list_file.sh
|
效果如下图:
图一
出现了一行空白,接着修改如下:
1
2
3
4
5
|
{
{{ range $_, $cron := .CronList }}
{{- $cron }}
{{ end -}}
} >> /scripts/docker/merged_list_file.sh
|
图2
正确修改方式如下,这个坑还是不少人会踩到:
1
2
3
4
5
|
{
{{- range $_, $cron := .CronList}}
{{ $cron -}}
{{- end }}
} >> /scripts/docker/merged_list_file.sh
|
图三
周末写工具自动拉取几个作者的脚本遇到需要提取脚本中的crontab表达式,研究了一下正则,因为我发现不同作者写脚本方式不一样,所以最稳的还是正则来匹配,之所以称为简单匹配,是因为没有做成真正的crontab是否有效的匹配,只是匹配格式,代码如下:
1
2
3
4
5
6
7
8
|
\* // 匹配*
\? // 匹配?
[0-9]{1,2} // 匹配单个时间
[0-9]{1,2}\-[0-9]{1,2} // 匹配时间段
[0-9]{1,2}\-[0-9]{1,2}\/[0-9]{1,2} // 匹配每隔多久的时间段
([0-9]{1,2}\,?)* // 匹配,号隔开的多个时间
([0-9]{1,2}\,?)*\-[0-9]{1,2} // 匹配,号和-号组成的时间段
([0-9]{1,2}\,?)*\-[0-9]{1,2}\/[0-9]{1,2} // 匹配,号、-号和/号组成的间隔多个时间段
|
组合在一起装成出现5次,代码如下
1
|
(((\*|\?|[0-9]{1,2}|[0-9]{1,2}\-[0-9]{1,2}|[0-9]{1,2}\-[0-9]{1,2}\/[0-9]{1,2}|([0-9]{1,2}\,?)*|([0-9]{1,2}\,?)*\-[0-9]{1,2}|([0-9]{1,2}\,?)*\-[0-9]{1,2}\/[0-9]{1,2})+[\s]){5})
|
效果如下,如果有人看到了这篇文章,恰好这个正则不能匹配你的crontab,麻烦留一下正则作为我的补充。
图4
2021-06-05更新最新的crontab表达式
1
|
[^\s\:]((\*|[0-9]{1,2}|[0-9]{1,2}\-[0-9]{1,2}|[0-9]{1,2}\-[0-9]{1,2}\/[0-9]{1,2}|([0-9]{1,2}\,?)*|([0-9]{1,2}\,?)*\-[0-9]{1,2}|([0-9]{1,2}\,?)*\-[0-9]{1,2}\/[0-9]{1,2})+[ ]){4}(\*|[0-9]{1,2}|[0-9]{1,2}\-[0-9]{1,2}|[0-9]{1,2}\-[0-9]{1,2}\/[0-9]{1,2}|([0-9]{1,2}\,?)*|([0-9]{1,2}\,?)*\-[0-9]{1,2}|([0-9]{1,2}\,?)*\-[0-9]{1,2}\/[0-9]{1,2})
|
2022-12-25更新最新的crontab表达式(支持6位)
1
|
(((\*(/\d+)?|((\d+(-\d+)?)(,\d+(-\d+)?)*))(/\d+)?)\s+(\*(/\d+)?|((\d+(-\d+)?)(,\d+(-\d+)?)*))(/\d+)?\s+(\*(/\d+)?|((\d+(-\d+)?)(,\d+(-\d+)?)*))(/\d+)?\s+(\*(/\d+)?|((\d+(-\d+)?)(,\d+(-\d+)?)*))(/\d+)?\s+(\*(/\d+)?|((\d+(-\d+)?)(,\d+(-\d+)?)*))(/\d+)?\s+(\*(/\d+)?|((\d+(-\d+)?)(,\d+(-\d+)?)*))(/\d+)?)
|