用于时间循环的Bash脚本
我试图编写代码,将日期转换为所需格式,并在每次运行中增加300秒 日期为表格2020-12-19 00:35:00+00:000希望将其转换为表格 2020-12-19T00:35:00Z每次跑步后增加时间戳五分钟用于时间循环的Bash脚本,bash,shell,Bash,Shell,我试图编写代码,将日期转换为所需格式,并在每次运行中增加300秒 日期为表格2020-12-19 00:35:00+00:000希望将其转换为表格 2020-12-19T00:35:00Z每次跑步后增加时间戳五分钟 for run in $(seq 0 $REPEAT) do echo "======================" VARIABLE=$( expr 300 '*' $run) DATE=$(date --iso-8601=sec
for run in $(seq 0 $REPEAT)
do
echo "======================"
VARIABLE=$( expr 300 '*' $run)
DATE=$(date --iso-8601=seconds -d "2020-19-19T00:35:00 + $VARIABLE seconds")
echo $DATE
for file in ${FILELIST[@]};
do
echo "Running fine"
done
done
但我得到的结果是:
2020-03-09T03:05:01+05:30
我希望输出为2020-12-19T00:35:00Z,然后是2020-12-19T00:40:00Z,依此类推。第19个月不存在。尝试以下方法:
# Get the number of seconds since Epoch
secs=$(date +%s --date="2020-9-19T00:35:00")
for run in $(seq 0 $REPEAT)
do
echo "======================"
# Next increment
VARIABLE=$((300*run))
# Add the increment seconds and translate to the desired format
DATE=$(date --iso-8601=seconds -d "@$((secs+VARIABLE))")
echo $DATE
for file in ${FILELIST[@]};
do
echo "Running fine"
done
done
顺便说一句,如果你真的想拥有Z
时区,你必须稍微调整一下输出格式。正如你的脚本所指出的那样,使用了不存在的日期2020-19-19
。一旦我们解决了这个问题,我们就非常接近了。只剩下三件事要做:
-d”在没有时间限制+3秒的情况下,似乎被误解为
。使用此解释,尾随的-d”(isoFormat With timezone='+3')seconds“
实际上没有意义,但似乎在日期上增加了一秒钟。为防止错误解释为时区,请在日期之后和seconds
+3秒之前指定时区:
-d“2020-19-19T00:35:00Z+3秒”
- 可以使用
的环境变量date
设置输出的时区。对于UTC,我们可以将TZ
设置为空字符串TZ
将UTC显示为date-I
而不是+00:00
。要更改输出格式,我们可以提供自定义日期字符串Z
,或者只需执行字符串替换+…Z
sed s/+00:00$/Z/
#! /usr/bin/env bash
repeat=5 # does 6 repeats! (retained behavior from your original script)
for ((run = 0; run <= repeat; run++)); do
date=$(TZ= date -Is -d "2020-12-19T00:35:00Z + $((run * 300)) sec" | sed 's/+00:00$/Z/')
echo "$date"
# do stuff
done
嗯,非常确定您可以在
date-d
中添加秒数,至少使用GNU date。date-d“现在+3600秒”
在一小时(=3600s)内打印日期从现在开始。你是对的,@Socowi。我在尝试添加此日期时遇到了一些问题,我认为这是不可能的。日期的输入格式并不容易。是的,你永远不知道-d
接受什么和拒绝什么。即使在阅读了(稀疏的)文档后,我仍然必须猜测和测试哪些有效,哪些无效。事实上,要求“2020-9-19T00:35:00+1秒“不起作用。
2020-12-19T00:35:00Z
2020-12-19T00:40:00Z
2020-12-19T00:45:00Z
2020-12-19T00:50:00Z
2020-12-19T00:55:00Z
2020-12-19T01:00:00Z