У меня есть следующий сценарий незавершенного выполнения в bash.
#!/bin/bash
# usage:
# ./script.sh <iso8601_period>
period_ago() {
if [[ $1 =~ P(([0-9]+)M)?([0-9]+)D ]]; then
local months=${BASH_REMATCH[2]:-0}
local days=${BASH_REMATCH[3]}
date -d "$months months $days days ago" "+%Y/%m/%d"
fi
}
period="$(period_ago $1)"
max=3
for (( i=0; i <= $max; ++i ))
do
temp=$i
if (( ${#temp} < 2 ))
then
temp="0$temp"
fi
echo $period/$temp
done
, и когда вы запустите его, в настоящее время он напечатает:
2019/07 /20/00
2019/07/20/01
2019/07/20/02
2019/07/20/03
Я пытаюсь выяснить, могу ли я сделать что-то подобное при запуске сценария (передавая два аргумента), и он даст мне даты между двумя периодами ISO8601, в данном случае 100 дней назад и 99 дней назад?
. / Script P100D P99D
2019/07/20/00
2019/07/20/01
2019/07/20/02
2019/07/20/03
2019/07/21/00
2019/07/21/01
2019/07/21/02
2019/07/21/03