Space 在 ksh 中的日期

Space in date in ksh

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

这里我需要在日期和时间之间给出 space 作为时间戳。

我需要打印这个 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

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

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

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

date 的参数中的 space 必须被引用。有以下三种方法:

  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"`
    

所有这些都可以使用 $(...) 而不是反引号,您可能会(或可能不会)发现反引号更具可读性:

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.