如果条件较旧,纪元日期
Posted
技术标签:
【中文标题】如果条件较旧,纪元日期【英文标题】:if condition older with epoch date 【发布时间】:2021-08-29 20:36:49 【问题描述】:我正在创建一个条件,以纪元格式检查实际日期并以纪元格式比较另一个字符串;如果字符串超过 10 天,请执行一些操作...
我尝试过这样的事情:
#!/bin/bash
timeago='10 days ago'
actual_date=$(date --date "now" +'%s')
last_seen_filter=$(date --date "$timeago" +'%s')
echo "INFO: actual_date=$actual_date, last_seen_filter=$last_seen_filter" >&2
if [ "$actual_date" -lt "$last_seen_filter" ]; then
echo "something"
else
echo "do something"
fi
或
#!/bin/bash
cutoff=$(date -d '10 days ago' +%s)
key="1624684050 1624688000"
while read -r "$key"
do
age=$(date -d "now" +%s)
if (($age < $cutoff))
then
printf "Warning! key %s is older than 10 days\n" "$key" >&2
fi
done < input
这还不够我需要,我在一个名为 converted_data
的文件中有纪元日期,我需要在 if 比较中包含这个字符串。
1624684050
1634015250
1614661650
1622005650
【问题讨论】:
你有非常奇怪的间距错误,也许在寻求人工帮助之前尝试shellcheck.net。 但是您的实际问题是什么?这些数字与您的代码有何关系? (而且还有多个间距错误。) 真的需要比较 10 个日历日(您需要检查语言环境、时区、闰日、闰秒、夏令时等)还是10 * 24 * 60 * 60 seconds
的比较够好吗?
@EdMorton 我正在尝试创建一个语言环境检查,如何将字符串中的纪元日期计算为实际日期,类似这样,如果纪元日期比实际日期更早(10 天),我的疑问是如何计算纪元日期,任何材料都可以帮助我!
好的,然后edit 你的问题是a)修复你发布的代码中的问题(复制/粘贴到@tripleee 建议的shellcheck.net,它会告诉你错误) b) 包含一个minimal reproducible example,其中包含简洁、可测试的样本输入和预期输出,以便我们为您提供帮助
【参考方案1】:
目前尚不清楚您要做什么,但也许使用 GNU awk 可以帮助您入门:
$ awk '
BEGIN today=strftime("%F")
secs = $0
days = 0
date = strftime("%F",secs)
while ( strftime("%F",secs+=(24*60*60)) < today )
++days
print $0":", date, "->", today, "=", days
' file
1624684050: 2021-06-26 -> 2021-06-13 = 0
1634015250: 2021-10-12 -> 2021-06-13 = 0
1614661650: 2021-03-01 -> 2021-06-13 = 102
1622005650: 2021-05-26 -> 2021-06-13 = 17
未来日期的 0
s 是因为您只询问过去 10 天的日期,所以我不在乎适应过去和未来的增量。我也没有考虑太多,所以检查逻辑和数学!
【讨论】:
哇,这对我帮助很大,你就是那个人!谢谢楼主!以上是关于如果条件较旧,纪元日期的主要内容,如果未能解决你的问题,请参考以下文章