我正在嘗試獲取下一個四分之一的第一天,例如現在我想要獲得00:01 2012-01-01
。它不應該太難。但是我因語法錯誤而停滯不前,因爲我無法正確地轉義所有內容。在bash中使用expr的語法錯誤
爲了得到正確的一個月,我想用:
expr `date "+((%m - 1)/3 + 1) * 3 % 12 + 1"`
的部分(%m - 1)/3 + 1
計算當前quartal的數量。 但是,*
似乎在某種程度上是錯誤的。如果我將其替換爲+
,則不會出現語法錯誤(結果對我而言並不重要)。我試圖通過使用\*
逃脫*
,但這沒有幫助。我想反引號存在一些問題。
我怎樣才能正確逃避*
?
編輯: 我的問題已經解決了,但是我想補充別人一個短的警告。請注意,如果您想直接在日期中使用它,並且還要關心正確的一年,則還需要爲該月添加前導零。所以在一天結束時,paxdiablo的建議可能是最簡單的。
你的意思是哪個空格? – lumbric 2011-12-24 12:21:38
您在'date'命令中使用的格式會產生空格。但'expr'只允許某些形式的空格參數。它不會允許使用'(expr)* something',這就是爲什麼你在星號上得到錯誤。 – fge 2011-12-24 12:31:06
我不認爲這是一個問題。其實我需要'expr'的空格。否則'expr'只是返回字符串的輸入(就像在你的代碼中的第一行)。 – lumbric 2011-12-24 12:47:22