将Month String转换为Integer Shell

blo*_*m17 0 bash shell openssl date certificate

好的,所以我运行openssl命令来获取过期脚本的日期.这样做给了我这个:

enddate=Jun 26 23:59:59 2012 GMT
Run Code Online (Sandbox Code Playgroud)

然后我把所有东西都切掉,然后离开这个月是"君"

现在,我的脚本的下一部分是告诉用户证书是否已过期,为此我使用if语句,它看起来像这样:

if [ $exp_year -lt $cur_year && $exp_month -lt $cur_month ]; then
    echo "" 
    echo "Certificate is still valid until $exp_date"
    echo "" 
else
    echo ""
    echo "Certificate has expired on $exp_date, please renew."
    echo ""
fi
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何将月份转换为整数甚至进行比较.我想做蛮力的方式是这样的:

Jan=01
Feb=02
Mar=03
...
Run Code Online (Sandbox Code Playgroud)

很明显,这是一种可怕的方式.有谁知道我能做什么?

Pet*_*esh 5

好吧,你可以使用:

now=$(date +%s)
cert=$(date --date="$enddate" +%s)
if [ $cert -lt $now ]; then
   echo "Old!"
fi
Run Code Online (Sandbox Code Playgroud)

即将日期转换为超过纪元的秒数​​并进行比较