多个日期不适用于bash中的纪元比较

时间:2018-02-13 14:40:22

标签: bash shell

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循环是否正在比较所有日期。

有谁能告诉我如何比较所有日期和显示输出与所有比较的日期?

1 个答案:

答案 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