2016-03-03 35 views
0

我的要求是爲Informatica中的Parameter指定值。 (我正在給一個參數分配時間戳)ksh中的日期空間

這裏我需要給出時間戳&時間戳。

我需要像打印此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

你得到了什麼錯誤? – kometen

+0

編輯時出錯 –

+0

您是否試圖將雙引號包圍在格式中? TIMESTAMP ='日期「+%m /%d /%Y%H:%S:%M」 – kometen

回答

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

所有這些都可以使用,而不是$( ... )反引號,您可能(或可能不會)發現更多的可讀性:

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

1

您需要環繞格式加上雙引號。

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

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

@ henk-langeveld謝謝。在操作系統x終端中雙擊不包含$ -sign。 – kometen