为什么我要约会:非法时间格式?

时间:2018-01-05 13:29:57

标签: bash macos date quoting

如果我在OSX bash终端上运行此命令:

date -jf '%F %TZ' -v+$((10**9))S -u "2011-04-25 00:00:00Z"

我得到了我想要的东西:Thu Jan 1 01:46:40 UTC 2043

但是当我跑步时:

./gigasecond.sh '2011-04-25'

我明白了:

2011-04-25 00:00:00Z
date: illegal time format
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

所有gigabit.sh包含:

#!/bin/bash
size=${#1}
DATE_SET_TO_MIDNIGHT="${1%Z} 00:00:00Z"
echo $DATE_SET_TO_MIDNIGHT
PARSE_DATE_AND_FORMAT=$(date -jf '%F %TZ' -v+$((10**9))S -u "$DATE_SET_TO_MIDNIGHT")
echo $PARSE_DATE_AND_FORMAT

我错过了什么?

1 个答案:

答案 0 :(得分:2)

您需要引用$DATE_SET_TO_MIDNIGHT,因为它包含空格。

PARSE_DATE_AND_FORMAT=$(date '%F %TZ' -v+$((10**9))S -u "$DATE_SET_TO_MIDNIGHT")

除非你有一个非常好的理由,否则你应总是引用参数扩展。