首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中未显示正确的日期格式

在bash脚本中未显示正确的日期格式
EN

Stack Overflow用户
提问于 2020-08-14 09:09:20
回答 1查看 187关注 0票数 0

这是我的剧本

代码语言:javascript
复制
#!/bin/bash
EXPIRYTIME=30
dateformat=(date -d \"+ $EXPIRYTIME minutes\" +"%Y-%m-%dT%H-%M-%S+00:00")
#dateformat=(date + "%Y-%m-%dT%H-%M-%S+00:00")
expiry=$(eval $dateformat)

它显示了错误的结果,即星期五8月14日14:36:17 IST 2020\

但是当我以cli运行时,它显示了正确的格式,即: 2020-08-14T15-03-52+00:00。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 09:29:48

这一行的主要问题是:

代码语言:javascript
复制
dateformat=(date -d \"+ $EXPIRYTIME minutes\" +"%Y-%m-%dT%H-%M-%S+00:00")

其中,=(...)要求为dateformat变量赋值数组。

然后eval $dateformat无法提供数组下标,所以bash将使用分配给index=0的任何值,在本例中是date;净结果是运行date (没有args),并得到当前日期/时间。

你有几个选择:

1-继续使用数组,但确保引用了整个数组索引集:

代码语言:javascript
复制
$ dateformat=(date -d \"+ $EXPIRYTIME minutes\" +"%Y-%m-%dT%H-%M-%S+00:00")
$ eval "${dateformat[@]}"
2020-08-14T04-53-55+00:00

2-将变量定义为单个字符串:

代码语言:javascript
复制
$ dateformat='date -d "+ '"${EXPIRYTIME}"' minutes" +"%Y-%m-%dT%H-%M-%S+00:00"'
$ eval "${dateformat}"
2020-08-14T04-53-57+00:00

请记住,对于这种特殊情况,不需要使用eval,因为${EXPIRYTIME}可以直接输入date命令:

代码语言:javascript
复制
$ date -d "+ ${EXPIRYTIME} minutes" +"%Y-%m-%dT%H-%M-%S+00:00"
2020-08-14T04-53-58+00:00

注意事项:上述示例是在本地系统时间为星期五(8月14日):23:55 CDT 2020时运行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63409858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档