小编CA1*_*171的帖子

可变替代

使用SH shell脚本在FreeBSD 8.3中遇到问题.

以下日期命令适用于FreeBSD

date -j -f "%Y/%m/%d" "$ii" '+%s'
Run Code Online (Sandbox Code Playgroud)

该脚本需要在FreeBSD和Ubuntu中运行,但上面的日期函数在Ubuntu中不起作用.

这适用于Ubuntu

date --date="$ii" +"%s"
Run Code Online (Sandbox Code Playgroud)

所以我希望有一个变量来根据操作系统在这两者之间切换.

# Options (freebsd/linux)
recdate=freebsd

ii=2014/06/06

if [ "$recdate" == "freebsd" ]; then
   recdate="\`date \-j \-f \"\%Y/\%m/\%d\" \"\$ii\" \'\+\%s\'\`"
else
   recdate="\`date \-\-date\=\"\$ii\" \+\"\%s\"\`"
fi
Run Code Online (Sandbox Code Playgroud)

我尝试过多次转义和引用而没有成功.

错误如下(使用set -x):

+ [ '' == freebsd ]
+ date --date= +%s
date: illegal option -- -
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
       [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
+ recdate=''
Run Code Online (Sandbox Code Playgroud)

variables bash freebsd sh

0
推荐指数
1
解决办法
136
查看次数

标签 统计

bash ×1

freebsd ×1

sh ×1

variables ×1