在我看来,它们两个意思都是“任意可用值”。它们之间的区别到底是什么?
在我看来,它们两个意思都是“任意可用值”。它们之间的区别到底是什么?
*
代表字段中的每个可能值。 ?
代表您不关心该字段的值。当您有两个可能会矛盾的字段时,就会使用它。一个常见的例子是月份中的日期和星期几字段。例如,考虑一个cron规范,用于在每个月的第一天上午10点运行:
0 0 10 1 * ? *
现在让我们进行分解:
0
- 我们希望它在10:00:00这个时间运行0
- 我们希望它在10:00:00这个时间运行10
- 我们希望它在10:00:00这个时间运行1
- 我们希望它在每个月的第一天运行*
- 我们希望它在每个月都运行(例如1月1日,2月1日等)?
- 我们不关心星期几。Cron应该在每个月的第一天运行,无论是星期天、星期一还是其他星期几。*
- 我们希望它每年都运行*(“所有值”)-用于选择字段内的所有值。例如,分钟字段中的“*”表示“每分钟”。
?(“没有特定值”)-当您需要在允许使用该字符的两个字段中指定某些内容但不是另一个字段时非常有用。例如,如果我想让我的触发器在月份的特定日期(例如第10天)触发,但不在乎那天是星期几,我会将“10”放入月份字段中,“?”放入星期字段中。请参见下面的示例以了解详细信息。
*
字符用于指定所有值。例如,分钟字段中的 "*
" 表示 "每分钟"。
?
字符允许在月份和星期几字段中使用。它用于指定“没有特定值”。当您需要在两个字段中指定某些内容但不需要另一个字段时,这很有用。请参见下面的示例以了解更多信息。*
意味着每个时间。根据位置不同,可以是每秒、每分钟、每小时、每天或每月。?
表示将由其他字段选择。因此,?
不会添加过滤器,但它也不会每次运行。?
用于设置日期,因为它可能是一个月的某一天或星期中的某一天。因此,如果您选择了某个月的某一天(如该月的第一天),那么您在星期几的那一天中放置 ?
,表示它不会每天运行,而只有那些符合其他条件的日子。反之亦然,如果您设置星期几,那么您就在那个月的某一天中放置 ?
。
1
,在“day-of-week”中指定*
,因为我们无法为两个字段都指定一个特定值(或“所有值”=*
)。那么?
只是一种消耗“day-of-week”字段的方式,而不与“day-of-month”产生冲突,这样我们就可以在它之后指定“year”的值了? (问这个问题是因为另一个问题说不清楚。) - T.J. Crowder