Date

在 shell 腳本中將變數傳遞給日期命令時出錯

  • September 13, 2018

我正在嘗試使用以下程式碼將 GMT 時間轉換為 AEST 時間,它工作正常。 date --date='TZ="GMT" 2017/07/24 12:00:00' "+%Y-%m-%d %H:%M:%S"

當我將日期變數作為參數傳遞給上述查詢時,如下所示:

RequestDate="2017/07/24 12:00:00"

date --date='TZ="GMT" ${RequestDate}' "+%Y-%m-%d %H:%M:%S".

我收到錯誤消息:

date: invalid date `TZ="GMT" ${RequestDate}`.

我嘗試了單引號和雙引號的多重封裝。

shell中有不同種類的引號,以及不同的可能解決方案。另一個答案是正確的,單引號中的值不會擴展。但是您希望 TZ 作為參數的一部分,並且您希望參數包含引號。您可以通過在不帶分隔符的情況下添加單引號部分和雙引號部分來實現此目的。

date --date='TZ="GMT" '"${RequestDate}" "+%Y-%m-%d %H:%M:%S"

您也可以使用反斜杠

date --date="TZ=\"GMT\" ${RequestDate}" "+%Y-%m-%d %H:%M:%S"

如果將變數放在單引號字元串中,shell 不會擴展該變數。嘗試:

$ TZ=GMT date --date "${RequestDate}" "+%Y-%m-%d %H:%M:%S"

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