printf "%s\n" "$EXPDATES"
Jul 12 2019 12:00:00
Jul 12 2019 12:00:00
Jul 12 2019 12:00:00
Jun 18 2019 12:00:00
Aug 8 2019 12:00:00
May 8 2018 00:00:00
上面的o / p我从“for循环”得到并将所有日期(包括一个空行)以相同的格式传递给另一个“for循环”以转换并与当前的“epoch”进行比较。
curr_epoch=$(date +%s)
for expdate in "${EXPDATES[@]}"; do
exp_epoch=$(date +%s -d "$expdate")
if (( curr_epoch > exp_epoch )); then
echo "$expdate in future."
else
echo "$expdate in past."
fi
done
这里我没有得到所有日期的正确输出。回声线中的“$ expdate”不会返回任何内容。
我不确定for循环是否正在比较所有日期。
有谁能告诉我如何比较所有日期和显示输出与所有比较的日期?
答案 0 :(得分:1)
您缺少代码中回显线的结尾引号。这将有效:
for expdate in "${EXPDATES[@]}"; do
exp_epoch=$(date +%s -d "$expdate")
if (( curr_epoch > exp_epoch )); then
echo "$expdate in future."
else
echo "$expdate in past."
fi
done