如何在 shell 脚本中检测 BSD 与 GNU 版本的日期

2023-12-23

我正在编写一个需要执行一些日期字符串操作的 shell 脚本。该脚本应该跨尽可能多的 *nix 变体工作,因此我需要处理机器可能具有 BSD 或 GNU 版本的 date 的情况。

测试操作系统类型的最优雅的方法是什么,以便我可以发送正确的日期标志?

EDIT:澄清一下,我的目标是使用日期的相对日期计算工具,这在 BSD 和 GNU 中似乎是不同的。

BSD 示例

date -v -1d

GNU 示例

date --date="1 day ago"

您想检测什么版本date您正在使用的命令,不一定是操作系统版本。

GNU Coreutilsdate命令接受--version选项;其他版本没有:

if date --version >/dev/null 2>&1 ; then
    echo Using GNU date
else
    echo Not using GNU date
fi

但正如 William Pursell 所建议的,如果可能的话,您应该只使用两者通用的功能。

(I thinkGNU date 可用的选项几乎是 BSD 版本可用选项的超集;如果是这样的话,那么假设 BSD 版本的代码应该与 GNU 版本一起工作。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 shell 脚本中检测 BSD 与 GNU 版本的日期 的相关文章

随机推荐