date: illegal option -- d
Linux 2023/8/15 22:09:14 点击:不统计
原载于:文章来源:www.forasp.cn网站制作学习
在shell 获取前N天时,mac os 系统出现了 date: illegal option -- d 的提示,显示参数错误。
查询后知道了,mac os 和linux 是有差异的。
首先看原始 linux 查询前 15天命令:
#!/bin/bash
ago=$(date -d "15 day ago " +%Y-%m-%d)
echo ${ago}
这个在linux下运行是没有问题的
其次,但是在 mac os下会出现 date: illegal option -- d 的错误提示。
date: illegal option -- d
usage: date [-jnRu] [-I[date|hours|minutes|seconds]] [-f input_fmt]
[-r filename|seconds] [-v[+|-]val[y|m|w|d|H|M|S]]
[[[[mm]dd]HH]MM[[cc]yy][.SS] | new_date] [+output_fmt]
再次, mac os 解决方案:
安装扩展
> brew install coreutils
修改命令
#!/bin/bash
# 获取几天前
ago=$(gdate -d "15 day ago " +%Y-%m-%d)
echo ${ago}
这样就解决了mac 系统下的出现 date: illegal option -- d 的问题。
最后 解决自动识别系统,并解决 date: illegal option -- d
#!/bin/bash
system=`uname`
if [ "$system" == "Darwin" ]; then
# 这里是 macOS 下的代码
log=$(gdate -d "15 day ago " +%Y-%m-%d)
else
# 这里是 Linux 下的代码
log=$(date -d "15 day ago " +%Y-%m-%d)
fi
echo ${log}