2016-06-28 57 views
0

因此,對於我的生活,我無法弄清楚爲什麼我的腳本不會將我的日期命令作爲變量。每次收到郵件時都會運行一個腳本,並且procmail按主題行篩選特定郵件。該腳本是這樣的:在bash中將當前日期設置爲腳本中的變量

d=$(date +%Y%m%d) 

:0 wc 
* ^(From|subject).*xxx 
| cat&>/xx/xx/xx/xx/MSG:$d && \ 
chmod xxx /xx/xx/xx/xx/MSG:$d && \ 
/xx/xx/xx/otherscript.sh /xx/xx/xx/xx/MSG:$d 

我已經運行date命令大量的其它腳本和stdout時間沒有任何問題,所以我想知道如果這是一個procmail問題?我已經看過幾個不同的網站,但仍未找到解決方案。我的最終目標是創建獨特的文件名以及每次收到新電子郵件時用於組織目的。

我認爲它與procmail有關的另一個原因是它僅在3個月前工作正常(沒有改變任何文件或權限)。我甚至嘗試了好幾種變化(只顯示幾個例子):

$'date +"%Y%m%d"' 
$(date) 
echo $(date) 

我得到創造了各種文件的範圍與它打印味精:(日期),味精:(日期等味精:出現(日期喜歡它試圖讀取變量,但正在被切斷或日期和+之間的空間導致問題

而在我的腳本結束時,我把它發送到另一個腳本,這也創建了一個新的文件日期附加,它工作得很好:

fileOut="/xxx/xxx/xxx/xxx.$v.$(date +"%Y%m%d-%H%M%S").xxx" 
prints: xxx.YH8AcFV9.20160628-090506.txt 

感謝您的時間:-)

+0

我看到的文檔似乎表明:''d ='date +「%Y%m%d」'''應該可以做到這一點。你嘗試過嗎? –

+0

設置'UMASK'而不是用'chmod'擺弄,或者更好的是,改變你的腳本,使它從標準輸入中讀取。 – tripleee

回答

1

Procmail不支持現代POSIX shell命令替換語法;你需要使用反引號。

d=`date +%Y%m%d` # or just date +%F 

如果你想避免調用外部的過程中,From_僞報頭包含在很多平臺上新的日期戳。

+0

沒有替代經驗.... –

+0

欣賞它,沒有意識到Procmail沒有使用相同的語法。 –