आप शेल ट्रेस को चालू करके समस्या देख सकते हैं:
+ date -d 'Apr 1 2016 - 1 month' +%B
March
++ date -d 'Apr 1 2016'
+ date -d 'Fri Apr 1 00:00:00 EDT 2016 - 1 month' +%B
February
जब आप आंतरिक dateकमांड के आउटपुट का उपयोग करते हैं , तो यह अप्रैल की शुरुआत में होता है, और जब ईएसटी / ईडीटी को बदलने के कारण एक महीने का समय घटता है, तो यह बंद हो जाता है:
+ date -d 'Fri Apr 1 00:00:00 EDT 2016 - 1 month'
Mon Feb 29 23:00:00 EST 2016
आपके परिणाम, निश्चित रूप से, आपकी स्थानीय समय-सीमा सेटिंग्स के अनुसार अलग-अलग होंगे। ट्रेस को चालू करने से टाइमजोन (मेरे मामले में EDT) दिखाई देगा।
परिणाम भिन्न होने का कारण यह है कि बाद के मामले में आपने अधिक जानकारी दी है date, इसके पैरामीटर को और अधिक विशिष्ट बना दिया है , अर्थात दिन का विशिष्ट समय। पहले भाग में, यह निर्दिष्ट नहीं किया गया था कि dateप्रदर्शन के लिए दिनांक / समय का निर्धारण कैसे किया जाए।
March