我正在编写一个需要执行一些日期字符串操作的 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(使用前将#替换为@)