2014-12-04 17 views
-3

我試圖編寫一個腳本來檢查特定時間窗口中的請求發生次數。我的方法包括一個變量$daysAgo,該值在循環的每次出現時遞減。我不明白的是,爲什麼劇本波紋管給我昨天的日期而不是2周前的日期。有任何想法嗎?如何動態更改天數,在bash中使用日期

#! /bin/bash 
daysAgo=14 
pastDate=$(date --date="($daysAgo) days ago" +%d/%b/%Y) 
+0

我的答案編輯,以解釋這個... – repzero 2014-12-06 18:30:37

回答

1

剛一擔任我去掉括號

#! /bin/bash 
daysAgo=14 
pastDate=$(date --date="$daysAgo days ago" +%d/%b/%Y) 
+0

隨意接受你自己的答案:http://stackoverflow.com/help/self-answer – whoan 2014-12-05 11:11:02

+0

試圖執行你的代碼從一個腳本,但不工作.. – repzero 2014-12-06 17:58:55

+0

好吧,我得到它的工作..優秀思維..我編輯我的答案,解釋爲什麼這是如此.. – repzero 2014-12-06 18:29:45

1

編輯答案*

內附變量

「$ DAYSAGO」

帶括號的

將導致bash將其解釋爲子shell函數(具有其自己的局部變量的函數)。在這種情況下,任何全局變量「$ daysAgo」都不會被代入子shell函數中。函數的思考就像一個帶有代碼和自己變量的獨立腳本。去掉括號的建議會解釋變量作爲全局變量

相關問題