2014-09-22 184 views
1

我有一個lastaction腳本我試圖在我的「日誌」文件夾中運行,因爲我想移動日誌/歸檔文件夾內的日誌文件夾中的所有文件和文件夾。所以,我只是增加Logrotate lastaction腳本不工作

mv log/* log/archive/2014 

顯然不夠,我得到一個錯誤,歸檔文件夾無法移動到其自身的子目錄,所以我嘗試添加額外的參數給移動命令移動除了存檔文件夾的一切。

mv !(archive) log/* log/archive/2014 

這個確切的命令,如果從CLI執行,工作得很好,但lastaction/endscript塊內添加時,它拋出以下消息

logrotate_script: 2: logrotate_script: Syntax error: "(" unexpected

任何人對爲什麼出現這種情況的任何線索?

回答

0

您正在使用bash作爲您的shell。您還啓用了extglob設置。

當logrotate執行該shell腳本時,其中一個或另一個不是真的。

另外,mv命令看起來很奇怪。如果archive在日誌下,那麼我不明白爲什麼!(archive)沒有log/作爲前綴。無論前面的extglob glob如何,log/*仍應與log/archive匹配。 (這是我認爲你想要mv log/!(archive) log/archive/2014,假設你不想忽略來自mv的警告。)

+0

語法(mv log /!(archive))不適用於cli ,因爲它會拋出「bash:!:event not found」 – 2014-09-24 06:40:45

+0

'mv!(archive)'工作過(像在你的OP中),但是'mv log /!(archive)'不?你有'extglob'啓用?在你的shell中如果前者工作後者應該。在logrotate腳本中,您需要使用bash並確保啓用了「extglob」,但歷史擴展應該不成問題,因爲默認情況下它應該在腳本中禁用。 – 2014-09-24 11:12:11