Unix系统下date -d yesterday命令返回当前日期 求获取昨日日期方案
Unix系统正确获取昨日日期的方案
你使用的date +%Y%m%d -d "yesterday"是GNU date(Linux默认搭载)的专属语法,Unix默认搭载的是BSD版本date,参数逻辑不兼容,因此无法返回预期结果。可使用以下方案实现需求:
方案1:使用BSD date原生调整参数(无需额外安装软件,推荐)
执行命令:date -v-1d +%Y%m%d
说明:-v是BSD date专属的时间调整参数,-1d代表将当前时间往前调整1天,后面跟随你需要的日期格式符即可正常输出昨日日期。方案2:GNU date兼容写法(适合需要跨Linux/Unix运行的脚本)
如果你已经在Unix上安装了GNU coreutils包,GNU date会默认被命名为gdate,直接执行Linux兼容语法即可:gdate +%Y%m%d -d "yesterday"
需要写跨平台兼容脚本的话,可以增加判断逻辑,示例如下:if command -v gdate >/dev/null 2>&1; then # Unix环境已安装GNU date yesterday=$(gdate +%Y%m%d -d "yesterday") else # 兼容Linux原生环境或未装GNU date的Unix环境 yesterday=$(date +%Y%m%d -d "yesterday" 2>/dev/null || date -v-1d +%Y%m%d) fi
内容的提问来源于stack exchange,提问作者Hammad Saleem
相关产品推荐
相关产品推荐

