Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
date命令linux中的日期错误无效_Linux_Shell_Date - Fatal编程技术网

date命令linux中的日期错误无效

date命令linux中的日期错误无效,linux,shell,date,Linux,Shell,Date,在脚本中,我正在使用命令 CURRENT_DATE_tmp=`date -d $CURRENT_DATE +%Y%m%d`. 它给出了错误日期:无效日期`+%Y%m%d' 原因可能是什么。我知道变量CURRENT_DATE中有值。DATE-d$CURRENT_DATE将打印与$CURRENT_DATE变量对应的日期 $) CURRENT_DATE="20140220" $) date -d $CURRENT_DATE Thu Feb 20 00:00:00 IST 2014 要将日期存储到变

在脚本中,我正在使用命令

CURRENT_DATE_tmp=`date -d $CURRENT_DATE +%Y%m%d`.
它给出了错误日期:无效日期`+%Y%m%d'
原因可能是什么。我知道变量CURRENT_DATE中有值。

DATE-d$CURRENT_DATE
将打印与
$CURRENT_DATE
变量对应的日期

$) CURRENT_DATE="20140220"
$) date -d $CURRENT_DATE
Thu Feb 20 00:00:00 IST 2014
要将日期存储到变量中,请尝试使用

$) CURRENT_DATE_TMP=`date +%Y%m%d`
$) echo $CURRENT_DATE_TMP
20140704
编辑

要将现有日期打印为新格式,请使用

$ CURRENT_DATE=`date +%Y-%m-%d`
$ echo $CURRENT_DATE 
2014-07-04
$ date -d$CURRENT_DATE "+%Y%m%d"
20140704
更好的方法是,将
$CURRENT\u DATE
变量括在引号中,这样带空格的日期就不会中断任何内容

$ CURRENT_DATE=`date`
$ echo $CURRENT_DATE 
Fri Jul 4 17:59:45 IST 2014
$ date -d"$CURRENT_DATE" "+%Y%m%d"
20140704
$ date -d$CURRENT_DATE "+%Y%m%d"
date: extra operand ‘4’

在当前示例中,在
-d
标志后有一个空格,请将其删除。

发生这种情况是因为变量未设置或为空,并且您没有引用变量:

$ CURRENT_DATE=""
$ CURRENT_DATE_tmp=$(date -d $CURRENT_DATE +%Y%m%d)
date: invalid date ‘+%Y%m%d’
如果使用引号,则不会出现错误:

$ CURRENT_DATE_tmp=$(date -d "$CURRENT_DATE" +%Y%m%d)
$ echo $CURRENT_DATE_tmp
20140704

这已经在一条评论中提到过,但是如果您想做您正试图做的事情,您必须确保变量$CURRENT中确实有一个值。 尝试在脚本中插入以下两行:

echo date is =$CURRENT=
date -d "$CURRENT" "+%Y%m%d"
如果输出行中有一行显示如下所示,则您忽略了设置
$CURRENT
转换为非空字符串:

date is ==

尝试日期-d“$CURRENT”+%Y%m%d“(带引号或不带引号,在
-d
后带空格或不带空格)的各种变体当
$CURRENT
为空字符串时,我会看到“无效日期”错误或得到今天的日期。

当前日期不是今天的日期。它应该在变量中。当前_日期可能包含值2014-03-10。我不想将当前日期存储在变量中。我在变量CURRENT_date中有格式为YYYY-MM-DD的日期,我想在变量CURRENT_date_tmp中获得格式为YYYYMMDD的日期。这应该是脚本。它看起来像是
date-d“$CURRENT”“+%Y%m%d”
在bash中工作;也就是说,如果$CURRENT中没有空格,那么消除空格或将$CURRENT放在引号中都可以解决问题。在任何情况下,答案(编辑后的)对我来说都是足够的。@DavidK是的,起初我以为OP是在打印日期,并且误读了旗帜,所以我就在这些行上思考。当他在上面的评论中澄清时,我才意识到他想做什么。当变量有值时,你能向我们演示错误吗?