AIX 服务器上 BASH 中昨天的日期变量

Yesterday's date variable in BASH on AIX Server

我想将昨天的日期存储在 BASH 变量中,以便在文件名通配符搜索中使用该变量搜索昨天的文件。我正在为美国纽约市 (EST) 时区使用以下格式,想知道是否可以保证从系统日期中获取昨天的日期;否则我可以进一步更改变量。

 yesterday=$(TZ=GMT+28 date +%Y%m%d)
 ...
  for file in $HOME_DIR/*$yesterday*.txt;
 ...

HOME_DIR 中的文本文件名如下: "ABC_20171011064612.txt"

更新 1:尝试消除与夏令时相关的问题:

yesterday=$(echo -e "$(TZ=GMT+28 date +%Y%m%d)\n$(TZ=GMT+18 date +%Y%m%d)"|grep -v $(date +%Y%m%d)|sort|tail -1)

1) 将今天日期前24小时和14小时(任意选择小于24小时)的两个日期转换为字符串

2) 过滤不是今天的日期

3) 将 2) 中的字符串按升序排序

4) 将 yesterday 变量分配给列表的最后一个 tail -1 条目

由于夏令时的原因,它可能并不总是正确的,尽管这不会是一个大问题。 你可以说:

yesterday=$(date -d yesterday +%Y%m%d)

您尝试了

yesterday=$(echo -e "$(TZ=GMT+28 date +%Y%m%d)\n$(TZ=GMT+18 date +%Y%m%d)|
            grep -v $(date +%Y%m%d)|sort|tail -1)

我认为它有效。