ksh中的日期空间

时间:2016-03-03 07:36:21

标签: unix ksh

我的要求是,为Informatica中的参数赋值。 (我正在为参数分配时间戳)

在这里,我需要在日期和时间之间留出空间。时间戳的时间。

我需要打印这个03/02/2016 08:48:40.000000我试过

TIMESTAMP=`date +%m/%d/%Y %H:%S:%M`

但它正在变得错误。

Field descriptor must begin with a + (plus sign).

此外,我需要像$$LAST_RUN_TIME=03/02/2016 08:48:40.000000

这样的打印

我尝试echo "$$LAST_RUN_TIME=$TIMESTAMP"$$正在检索某些值,因此它会像61210934LAST_RUN_TIME=03/02/2016 08:48:40.000000

那样打印

2 个答案:

答案 0 :(得分:1)

您需要用双引号括起格式。

TIMESTAMP=$(
    date "+%m/%d/%Y %H:%S:%M"
)

echo $TIMESTAMP
03/03/2016 08:04:49

答案 1 :(得分:1)

必须引用date参数中的空格。有三种方法可以做到这一点:

  1. 使用反斜杠:

    TIMESTAMP=`date +%m/%d/%Y\ %H:%S:%M`
    

    对于您的示例来说,这可能是最简单的,但如果需要大量报价,可能会变得难以处理。

  2. 使用单引号:

    TIMESTAMP=`date '+%m/%d/%Y %H:%S:%M'`
    TIMESTAMP=`date +'%m/%d/%Y %H:%S:%M'`
    

    当你有文字参数时这很好。

  3. 使用双引号:

    TIMESTAMP=`date "+%m/%d/%Y %H:%S:%M"`
    

    如果您有需要扩展的参数,这很好:

    format='%m/%d/%Y %H:%S:%M'
    TIMESTAMP=`date "+$format"`
    
  4. 所有这些都可以使用$( ... )代替反引号,您可能(或可能不会)发现它们更具可读性:

    TIMESTAMP=$(date +%m/%d/%Y\ %H:%S:%M)
    
    TIMESTAMP=$(date '+%m/%d/%Y %H:%S:%M')
    TIMESTAMP=$(date +'%m/%d/%Y %H:%S:%M')
    
    TIMESTAMP=$(date "+%m/%d/%Y %H:%S:%M")
    
    format='%m/%d/%Y %H:%S:%M'
    TIMESTAMP=$(date "+$format")
    

    顺便说一下 - 你真的想要在几分钟前几秒钟?如果没有,那么您可以使用%T代替%H:%M:%S