模拟用于crontab行的前五个字段中的表达式的相同数字匹配的最简单方法是什么?
例如,给定模式“1,5-7,16,* / 3”(愚蠢的例子,我知道)和值“6”的输入,输出将是布尔值true。
如果没有一个死的简单解决方案,在我的情况下提供第三个输入是切合实际的,该输入将指定星号需要匹配的最大值,以便星号(以及连字符范围)可以转换为值列表,输入值可以与该列表匹配。 (上面的示例模式列表将是“1,3,5,6,7,9,12,15,16,18”,最大值为“18”。)
谢谢!
答案 0 :(得分:2)
我主要是一个ksh人,但我对bash的经验说这应该有用(给出你的例子),或者至少指出你需要做什么。
hrVal=6
case ${hrVal} in
1|[5-7]|16 ) print -- "true" ;;
* ) print -- "false" ;;
esac
编辑2018-08-20 对于bash
,您需要将print --
更改为echo ....
或printf "%s\n"
。
实际上,我会移除print -- ""
内容,只需调用exit 0
或exit 1
,然后使用相应的返回码退出,然后通过调用进行测试过程
包括你的例子的其余部分,我必须做
hrVal=6
eval "
case ${hrVal} in
1|[5-7]|16|$(( ${hrVal} / 3 )) ) print -- "true" ;;
* ) print -- "false" ;;
esac
"
所以,这可能是令人兴奋的!
(也许是($ {hrVal} / 3))bash)
IHTH