我想在shell腳本中創建一個時間戳變量,以使日誌記錄更容易一些。我想在腳本的開頭創建變量,並在發出echo $timestamp
時讓它打印出當前時間。然後我想,這證明會更困難。這裏有一些事情我已經試過:在bash腳本中創建時間戳變量
timestamp="(date +"%T")"
回聲打印出(date +"%T")
timestamp="$(date +"%T")"
回聲打印時的變量初始化的時間。
我試過的其他東西只是輕微的變化,沒有更好的工作。有誰知道如何完成我想要做的事情?
我想在shell腳本中創建一個時間戳變量,以使日誌記錄更容易一些。我想在腳本的開頭創建變量,並在發出echo $timestamp
時讓它打印出當前時間。然後我想,這證明會更困難。這裏有一些事情我已經試過:在bash腳本中創建時間戳變量
timestamp="(date +"%T")"
回聲打印出(date +"%T")
timestamp="$(date +"%T")"
回聲打印時的變量初始化的時間。
我試過的其他東西只是輕微的變化,沒有更好的工作。有誰知道如何完成我想要做的事情?
爲了得到當前時間戳,並且當一個固定的變量定義的不當時,關鍵是要使用的功能和不一個變量:
#!/bin/bash
# Define a timestamp function
timestamp() {
date +"%T"
}
# do something...
timestamp # print timestamp
# do something else...
timestamp # print another timestamp
# continue...
如果您不喜歡%T
說明符給出的格式,您可以合併由date
接受的其他時間轉換說明符。對於GNU date
,你可以找到官方文檔在這裏這些說明的完整列表:https://www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers
如果你想獲得UNIX時間戳,那麼你需要使用:
timestamp=$(date +%s)
%T
只會給你時間;同%H:%M:%S
(通過http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/)
您可以使用
timestamp=`date --rfc-3339=seconds`
這也提供格式2014-02-01 15:12:35-05:00
背蜱(`
)字符會導致它們之間有什麼進行評估,並有結果包含在該行中。 date --help
有其他選擇。
至於什麼時間,它應該在包含在屏幕輸出或日誌文件之前立即執行,以便列出輸出時間。 – Bill
由於輸出空間的原因,這比時間戳的理想格式要少。一定要在使用中引用它「$ timestamp」,否則你會得到兩個參數。例如'touch $ timestamp'會產生兩個文件。 – harschware
timestamp=$(awk 'BEGIN {srand(); print srand()}')
沒有值的srand在大多數awk實現中使用當前時間戳。
爲什麼不使用簡單的'date'命令? – caesarsol
DATE=`date "+%Y%m%d"`
DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too
我使用的是Ubuntu 14.04。
我係統中的正確方法應該是date +%s
。
date +%T
的輸出就像12:25:25
。
根據你打算如何使用它,你仍然需要使用命令替換:'echo「$(timestamp):發生了什麼」'。 – chepner
至於格式,這裏是一組最常見的格式:http:// zxq9。com/archives/795 – zxq9
對我來說,我想'日期+'%%%% - %S%' –