bash शैल स्क्रिप्ट में वाई वाई वाई वाई-एमडी-डीडी प्रारूप दिनांक




shell scripting (7)

हालिया बश (संस्करण ≥ 4.2) के साथ, आप प्रारूप संशोधक %(strftime_format)T साथ बिल्टिन printf उपयोग कर सकते हैं:

$ printf '%(%Y-%m-%d)T\n' -1  # Get YYYY-MM-DD (-1 stands for "current time")
2017-11-10
$ printf '%(%F)T\n' -1  # Synonym of the above
2017-11-10
$ printf -v date '%(%F)T' -1  # Capture as var $date

मैंने अपनी बैश खोल स्क्रिप्ट में $(date) का उपयोग करने का प्रयास किया, हालांकि मुझे वाई वाई वाई वाई-एमएम-डीडी प्रारूप में तारीख चाहिए। ये मुझे कैसे मिलेगा?


बैश में:

date से साल-दर-दिन प्राप्त करें

DATE=`date +%Y-%m-%d`

साल-दर-दिन घंटे प्राप्त करें: मिनट: date से दूसरा

DATE=`date '+%Y-%m-%d %H:%M:%S'`

अन्य उपलब्ध दिनांक प्रारूप दिनांक मैन पेज से देखे जा सकते हैं:

man date

आप आईएसओ 8601 मानक दिनांक प्रारूप की तलाश में हैं, इसलिए यदि आपके पास जीएनयू तिथि है (या 1 9 88 से अधिक आधुनिक तारीख कम है) तो बस करें: $(date -I)


date -d '1 hour ago' '+%Y-%m-%d'

आउटपुट 2015-06-14 होगा।


#!/bin/bash -e

x='2018-01-18 10:00:00'
a=$(date -d "$x")
b=$(date -d "$a 10 min" "+%Y-%m-%d %H:%M:%S")
c=$(date -d "$b 10 min" "+%Y-%m-%d %H:%M:%S")
#date -d "$a 30 min" "+%Y-%m-%d %H:%M:%S"

echo Entered Date is $x
echo Second Date is $b
echo Third Date is $c

यहां एक्स नमूना दिनांक का उपयोग किया गया है और फिर उदाहरण डेटा के स्वरूपण दोनों के साथ-साथ वर्तमान दिनांक के बाद 10 मिनट अधिक तिथियां प्राप्त करता है।


आज़माएं: $(date +%F)


यदि आप सालाना 2017 के बजाए 17 जैसे दो नंबर प्रारूप में चाहते हैं, तो निम्न कार्य करें:

DATE=`date +%d-%m-%y`






scripting