(date -f 'd')>>z
gc z|gu|%{$c=(1,++$c)[($d=date $_)-eq$n]
$n=$d+1D}
"You have a $c day streak!"
এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা
আমি বর্তমান তারিখটি (সংক্ষিপ্ত তারিখের ফর্ম্যাটে) কোনও ফাইলের (নামযুক্ত z) লিখে লিখে শুরু করি । >>যথারীতি কাজ করে; সংযোজন, কিন্তু এটি বিদ্যমান না থাকলে তৈরি করে।
এরপরে, আমি ফাইল লাইনের লিখিত বিষয়গুলি Get-Content( gc), পাইপ দিয়ে Get-Unique( gu) দিয়ে লাইন দিয়ে পড়ি কারণ একই তারিখ থেকে একাধিক এন্ট্রি থাকতে পারে, তারপরে পাইপ দিয়েForEach-Object ( %)।
লুপে, আমি 0প্রথম উপাদানটির মান সহ 2 টি উপাদান অ্যারে এবং দ্বিতীয় উপাদানের $c( +1) এর বর্তমান মান তৈরি করি । ব্যবহারের ++$cফলে আমাকে এ জাতীয় কিছু মোড়ানো এড়াতে সহায়তা করে$c+1 বন্ধনীগুলির ।
তারপরে আমি একটি বুলিয়ান তুলনা সহ দুটি উপাদান অ্যারেতে সূচক করি, যা এর 0জন্য $falseবা এর সাথে 1মিলিত হবে $true। তুলনার মধ্যে, আমি ফাইলের বর্তমান লাইন থেকে পড়ার তারিখ থেকে তৈরি $dএকটি [datetime]অবজেক্টকে বরাদ্দ করছি । সেই অবজেক্টটির সাথে তুলনা হয় $n, যা প্রথম রানে এখনও নির্ধারিত হয়নি, সুতরাং এটি কখনও মিলবে না এবং $cসূচনা করা হবে 1, যেহেতু সূচকের মান নির্ধারিত হচ্ছে $c।
পরবর্তী, বর্তমান $nতারিখের সময় 1অবজেক্টে যোগ করে পরবর্তী প্রত্যাশিত তারিখের সাথে পপুলেশন করা হয়। এখানে মূল কীটির 1Dঅর্থ এটি [decimal]আক্ষরিক। কোনও কারণে আপনি যখন একটিতে পূর্ণসংখ্যার সংখ্যা যুক্ত করেন [datetime], এটি টিক্স হিসাবে ব্যাখ্যা করা হয় তবে আপনি যখন ভাসমান পয়েন্ট সংখ্যা যুক্ত করেন, সেগুলি দিন হিসাবে ব্যাখ্যা করা হয়। সুতরাং $nএটি পরবর্তী পুনরাবৃত্তির জন্য পপুলেট করে।
এর প্রভাবটি হ'ল প্রতিটি তারিখ "পরবর্তী" তারিখের সাথে মেলে না এমন প্রতিবার কাউন্টারটি রিসেট হয়ে যায় (যা আগের তারিখের সাথে আরও 1 দিন)।
অবশেষে বার্তাটি আউটপুট।