Linux

將日期變數輸入日期計算程式碼的正確語法

  • April 28, 2016

在我的腳本中,以下程式碼成功地為 $n 生成了一個時間戳變數,格式為 2016-04-28T15:47:48

for n in $(perl parsetime.pl | sed "s/.....$//")

do
echo $n

結果是:

2016-04-28T15:47:48

但是,我現在想使用這個變數來計算提前 15 分鐘的時間。其他人為我提供了以正確格式生成時間戳的語法(有效) - 這是這樣實現的:

/opt/bin/date --date '-15 minutes 2016-04-28T15:39:27' "+%Y-%m-%dT%H:%I:%S"

結果是:

2016-04-28T09:09:27

但是,我現在的問題是,當我嘗試使用 $n 變數而不是寫出實際時間戳時,我收到這樣的消息,我收到一條錯誤消息。

for n in $(perl parsetime.pl | sed "s/.....$//")

do

/opt/bin/date --date '-15 minutes "$n"' "+%Y-%m-%dT%H:%I:%S" 

結果:

/opt/bin/date: invalid date `-15 minutes "$n"

我究竟做錯了什麼?如何將 $n 變數合併到程式碼中?

問題在這裡:

'-15 minutes "$n"'

單引號停止變數替換,因此您實際上是在傳遞"$n"而不是變數的內容。

寫:

/opt/bin/date --date "-15 minutes $n" '+%Y-%m-%dT%H:%I:%S'

反而。

引用自:https://unix.stackexchange.com/questions/279775