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

时间:2015-03-28 14:03:40

标签: sh gnu freebsd

我有以下格式的字符串: YYYY-MM-DD

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

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

freeBSD上的

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

但是如果我的脚本(sh,而不是bash)必须在这两个操作系统上运行怎么办?我该如何组合呢?

1 个答案:

答案 0 :(得分:1)

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

#!/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'