在 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'
我有一个格式如下的字符串:
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'