2013-03-29 120 views
0

我需要使用日期字符串計算日期字符串,該日期字符串來自bash腳本中的命令行變量。bash日期環境變量

假設我有一組命令行參數(CLA's),例如$ 1 = 2013 $ 2 = 03 $ 3 = 22,我希望獲得格式化日期字符串之前或之後的某個天數。

我總是可以做,沒有膠質液泡,

date -d "20130322 -1 day" -u +%Y%m%d 

但是當我嘗試像,

yyyy=2013 
    month=03 
    day=22 
    yest='"'$yyyy$month$day'" -1 day"' 
    yesterday=$(date -d $yest -u +%Y%m%d) 

我得到 「日期:無效選項 - '1'」

我哪裏出錯了?

+0

date不是一個環境變量。這是一個命令,通常位於/ bin中。使您的主題標題看起來很混亂。看看你的問題的主體,我認爲你的意思是「命令行參數」。 –

+0

它真的結束了兩者的結合。對困惑感到抱歉。我通常在第一罐咖啡之前沒有編碼... – GerryC

+0

如果「CLA」表示「命令行參數」,請更新您的問題以使用完整的短語。 –

回答

1

顯然,你overcombined用引號

[email protected]:~$ echo $(date -d "20130322 -1 day" -u +%Y%m%d) 
20130321 
[email protected]:~$ xx=20130322 
[email protected]:~$ echo $(date -d "$xx -1 day" -u +%Y%m%d) 
20130321 
[email protected]:~$ 
[email protected]:~$ yesterday=$(date -d "$xx -1 day" -u +%Y%m%d) 
[email protected]:~$ echo $yesterday 
20130321 
[email protected]:~$ 

PS。以上在MacOSX上不適用於bash,但是在Linux上。

+1

它可以在MacOS上工作,如果你安裝了GNU Date(使用macports等)。 –

+0

謝謝。那測試,現在如果我能使它在劇本里面工作。我知道這一定很簡單。 – GerryC

+0

工作。感謝您對我的邏輯進行去卷積處理。 – GerryC