使用SH shell脚本在FreeBSD 8.3中遇到问题。变量替换
在FreeBSD下
date -j -f "%Y/%m/%d" "$ii" '+%s'
该脚本需要在两个FreeBSD和Ubuntu的运行,但日期函数并不在Ubuntu工作下date命令的作品。
这工作在Ubuntu
date --date="$ii" +"%s"
所以我希望有一个变量取决于操作系统这两者之间进行切换。
# 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
我试过多次转义和引用没有成功。
错误如下(使用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=''
'+ [''== freebsd]'给你提示了吗? – devnull
这是使用非标准扩展的麻烦;你会得到非标准化的行为。 –
http://mywiki.wooledge.org/BashFAQ/053 – tripleee