我想编写一个bash脚本,确定相对于开始日期的10天时间(十年)已经结束(格式为YYYY-MM-DD)。如果10天期限已完成,脚本必须输出10天期限。我是bash的新手,并且在代码中存在很多语法错误,请帮助我。
#!/bin/bash
# GNU bash, version 4.3.46
CURRENT_DATE=$(date +%Y-%m-%d)
START_DATE=2019-01-01
IS_TODAY_DECADE_CALCULATION_DAY = (CURRENT_DATE - START_DATE) % 10
if [ $IS_TODAY_DECADE_CALCULATION_DAY -eq 0 ]
then
BEGIN_DATE = $("$CURRENT_DATE - 11 days" +%Y-%m-%d)"
END_DATE = $("$CURRENT_DATE - 1 day" +%Y-%m-%d)"
echo "Period is="$BEGIN_DATE":"$END_DATE"
else
echo "Decade is not finished."
fi
您应该比较Unix时间戳。如果时间戳“现在+ 10天”大于开始日期,则该期间结束。
#! /bin/bash
START_DATE=2019-01-01
TEST_DATE_NOW=$(date "+%s" -d "-10 days")
TEST_DATE_OLD=$(date -d ${START_DATE} "+%s")
if [ ${TEST_DATE_NOW} -ge ${TEST_DATE_OLD} ]; then
echo "Ten days period ended"
else
echo "Still in ten day period"
fi
exit 0;