我的要求是,为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
答案 0 :(得分:1)
您需要用双引号括起格式。
TIMESTAMP=$(
date "+%m/%d/%Y %H:%S:%M"
)
echo $TIMESTAMP
03/03/2016 08:04:49
答案 1 :(得分:1)
必须引用date
参数中的空格。有三种方法可以做到这一点:
使用反斜杠:
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"`
所有这些都可以使用$(
... )
代替反引号,您可能(或可能不会)发现它们更具可读性:
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
。