在 UNIX 和 freeBSD 中解析字符串以检索日期

Parsing string for retrieving date in UNIX and freeBSD

我有一个格式如下的字符串: YYYY-MM-DD

如何将它转换为 UNIX freeBSD 上的日期? 我知道是

date -d $VAR +'%Y-%m-%d' GNU

date -jf $VAR +'%Y-%m-%d' 在 freeBSD 上

但是如果我的脚本(在 sh 中,而不是在 bash 中)必须在两个 OS 上工作怎么办?怎么组合呢?

因为日期命令不同,如果检测到正确的平台,一种解决方案可能是:

#!/bin/sh

VAR='2014-03-15'
platform='uknown'
str="$(uname)"

if [ "$str" == 'Linux' ]; then
    platform='linux'
elif [ "$str" == 'FreeBSD' ]; then
    platform='freebsd'
fi

然后根据平台可以做:

if [ "$platform" == 'linux' ]; then
    date -d "$VAR" +'%Y-%m-%d'
elif [ "$platform" == 'freebsd' ]; then
    date -jf "%Y-%m-%d" "$VAR" +'%Y-%m-%d'
fi

此外,我认为您缺少命令格式:

date -jf $VAR +'%Y-%m-%d'

我想我应该是:

date -jf "format" $VAR +'%Y-%m-%d'