2013-01-19 11 views
5

मैं बैश और खोल के लिए नया हूं लेकिन मैं एक डेबियन इंस्टॉल चला रहा हूं और मैं एक स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो बिना किसी अतिरिक्त पैकेज को इंस्टॉल किए बिना किसी तारीख को पा सकता है। ट्यूटोरियल से मैं इस स्तर को मिल गया है:बैश शैल वर्तमान दिनांक माइनस दिन की संख्या

#!/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 और नहीं है datetime 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' 

प्रयास करें डेबियन पर क्या करना चाहिए।

0

आप अजगर स्क्रिप्ट के बजाय संशोधित सकता है - कि जिस तरह से आप date

की विशेष कार्यान्वयन पर निर्भर नहीं हैं
संबंधित मुद्दे