Bash 为什么我得到日期:非法的时间格式?

Bash 为什么我得到日期:非法的时间格式?,bash,macos,date,quoting,Bash,Macos,Date,Quoting,如果在OSX bash终端上运行此命令: date -jf '%F %TZ' -v+$((10**9))S -u "2011-04-25 00:00:00Z" 我得到了我想要的:周四1月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

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

date -jf '%F %TZ' -v+$((10**9))S -u "2011-04-25 00:00:00Z"
我得到了我想要的:周四1月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

我遗漏了什么?

您需要引用
$DATE\u SET\u to\u MIDNIGHT
,因为它包含空格

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

除非您有很好的理由不这样做,否则您应该始终引用参数扩展。

您需要引用
$DATE\u SET\u to\u MIDNIGHT
,因为它包含空格

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

除非你有很好的理由不这样做,否则你应该总是引用参数扩展。

我更新了我的代码,在脚本中包含
-jf
。没有它就无法工作。我更新了代码,将
-jf
包含在脚本中。没有它就不能工作。