2013-01-19 130 views
5

我是bash和shell的新手,但我正在運行debian安裝,我正在嘗試製作一個腳本,可以在以前找到日期而無需安裝任何其他軟件包。從教程我有到這個階段:Bash Shell當前日期減去天數

#!/bin/sh 
# 
# BACKUP DB TO S3 
# 

# VARIABLES 
TYPE="DATABASE" 
DAYS="30" 

# GET CURRENT DATETIME 
CURRENTDATE="$(date +%Y%m%d%H%M%S)" 

# GENERATE PAST DATE FROM DAYS CONTSTANT 
OLDERDATE=`expr $CURRENTDATE - $DAYS' 

# CALL PYTHON SCRIPT WITH OLDERDATE ARGUMENT 
python script.py $OLDERDATE 

我在哪裏卡住的事實是,我的「天」正好是30號和formattted心不是日期時間,所以當我來到減去它從的currentdate變量它顯然不兼容。

任何人都會友善地幫助我找到一種方法來使其工作,因爲它應該?

回答

7

試着這樣做:

#!/bin/sh 
# 
# BACKUP DB TO S3 
# 

# VARIABLES 
TYPE="DATABASE" 
DAYS="30" 

# GET CURRENT DATETIME 
CURRENTDATE="$(date +%Y%m%d%H%M%S)" 

# GENERATE PAST DATE FROM DAYS CONSTANT 
OLDERDATE="$(date "+%Y%m%d%H%M%S" -d "$DAYS days ago")" 

# CALL PYTHON SCRIPT WITH OLDERDATE ARGUMENT 
python script.py "$OLDERDATE" 

info coreutils 'date invocation' | less +/28.7\ Relative\ items\ in\ date\ strings

15

嘗試

date -d '30 days ago' 

在Debian應該做的。

0

您可以修改python腳本,而不是 - 這樣你就不會依賴於特定的實現date

相關問題