উত্তর:
আপনি কোনও অবৈধ তারিখের জন্য একটি 0 অ-বহির্গমন কোড তৈরির আচরণের date
উপর নির্ভর করে, একটি লিপ বছরের জন্য পরীক্ষা করার জন্য প্রস্থান কোডটি ব্যবহার করতে পারেন date
, অবিকৃতভাবে একটি অ-লিপ বছরে ২৯ শে ফেব্রুয়ারি নেই:
date -d $year-02-29 &>/dev/null
echo $?
একটি ফাংশন হিসাবে:
isleap() { date -d $1-02-29 &>/dev/null && echo is leap || echo is not leap; }
ব্যবহার:
$ isleap 2019
is not leap
$ isleap 2020
is leap
আপনার প্রশ্ন সম্পর্কে:
লিনাক্স টার্মিনালে 2014 এবং 2020 এর মধ্যে লিপ বছরগুলি কীভাবে খুঁজে পেতে পারি?
echo "Leap years between 2014 and 2020:";
for y in {2014..2020}; do
date -d $y-02-29 &>/dev/null && echo $y;
done
@ রোভোর উত্তরের একটি বৈকল্পিক ...
for a in {2014..2020}
do
date -d $a-02-29 +"%Y" 2>/dev/null
done
date -d $a-02-29 +"%Y" 2> /dev/null
29 ফেব্রুয়ারির তারিখ নির্ধারণ করে এবং ঘটে যাওয়া কোনও ত্রুটি উপেক্ষা করে বছরের মুদ্রণ করে।
seq -f "%g-02-29" 2014 2020 | date -f- +"%Y" 2>/dev/null
এখানে স্ট্যাক ওভারফ্লোতে, একটি মার্জিত সমাধান অনুভা দ্বারা সরবরাহ করা হয়েছিল :
#!/bin/bash (( !($1 % 4) && ( $1 % 100 || !( $1 % 400) ) )) && echo "leap year" || echo "not a leap" exit 0
নামের একটি পাঠ্য ফাইলগুলিতে উপরের সংরক্ষণ করুন isleap
।
নির্বাহের অনুমতি সেট করতে ভুলবেন না:
chmod +x isleap
এটা পরীক্ষা করো:
$ ./isleap 1900
not a leap
$ ./isleap 2000
leap year
date
কমান্ডটিতে একটি নির্বিচারে প্রয়োগের উপর নির্ভর করে অন্যরা হ্যাক।
আপনি যদি লিপ বছরের কিছু ঘটনামূলক "আরকেন" বৈশিষ্ট্যের উপর নির্ভর করতে না চান (যেমন তাদের বিভাজন, এক বছরে কত দিন বা একটি নির্দিষ্ট দিনের অস্তিত্ব) আপনার উপযুক্ত ক্যালেন্ডার লাইব্রেরি সহ একটি প্রোগ্রামিং ভাষা ব্যবহার করা উচিত ফাংশন। আমি পাইথনের 1, 2 :calendar.isleap()
#!/usr/bin/python3
import sys
import traceback
import calendar
try:
year = int(sys.argv[1])
is_leap = calendar.isleap(year)
except:
traceback.print_exc()
sys.exit(2)
print(is_leap) # Print the year’s leap status
sys.exit(not is_leap) # Exit program with "success" if leap and "failure" otherwise
ব্যবহার:
$ python3 is_leap.py 2000
True
$ python3 is_leap.py 2100
False
বা ওয়ান-লাইনার হিসাবে (সঠিক ত্রুটি পরিচালনা না করে):
$ python3 -c 'import sys, calendar; print(calendar.isleap(int(sys.argv[1])))' 2000
True
$ python3 -c 'import sys, calendar; sys.exit(not calendar.isleap(int(sys.argv[1])))' 2000
$ echo $?
0
1 আমি নিশ্চিত একটি সাধারণ সমতুল্য পার্ল সমাধান রয়েছে।
2 পাইথনের calendar
মডিউলটি প্রোলেপটিক গ্রেগরিয়ান ক্যালেন্ডার ব্যবহার করে , অর্থাৎ এটি জি ক্যালেন্ডারকে অনির্দিষ্টকালের জন্য অতীত ও ভবিষ্যতে প্রসারিত করে। জি ক্যালেন্ডারটি কেবল 1582 সালে কার্যকর হয়েছিল বা কিছু লোকেল বিভিন্ন লিপ বর্ষের নিয়ম সহ অন্যান্য ক্যালেন্ডার ব্যবহার অব্যাহত রাখে তা বিবেচনায় নেওয়া হয় না। আপনার যদি অন্যান্য ক্যালেন্ডারগুলির জন্য সমর্থন প্রয়োজন, যেমন জুলিয়ান ক্যালেন্ডার, আমি আপনাকে একটি উপযুক্ত পাইথন এক্সটেনশন মডিউলটি ইনস্টল এবং ব্যবহার করার পরামর্শ দিই।
def isleap(year):
"""Return True for leap years, False for non-leap years."""
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
। একই fct। Askubuntu.com/a/1081237/790920