Linux
將日期變數輸入日期計算程式碼的正確語法
在我的腳本中,以下程式碼成功地為 $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'
反而。