(date -f 'd')>>z
gc z|gu|%{$c=(1,++$c)[($d=date $_)-eq$n]
$n=$d+1D}
"You have a $c day streak!"
온라인으로 사용해보십시오!
설명
현재 날짜 (짧은 날짜 형식)를 파일 ( z)에 파일로 쓰는 것으로 시작합니다 . >>평소와 같이 작동합니다. 추가하지만 존재하지 않는 경우 만듭니다.
다음에, I는 부합하여 파일 라인의 내용을 판독 Get-Content( gc내지), 파이프 Get-Unique( gu통해 여러 후 동일한 기간에서 항목 파이프가있을 수 있기 때문에) ForEach-Object( %).
루프 0에서 첫 번째 요소 의 값 과 두 번째 요소의 현재 값 $c( +1)을 사용하여 2 요소 배열을 만듭니다 . 를 사용 ++$c하면 $c+1괄호 와 같은 줄 바꿈을 피할 수 있습니다 .
그런 다음에 병합 얻을 것이다 부울 비교와 두 요소 배열에 I 인덱스 0에 대한 $false또는 1에 대한 $true. 비교 내에서, 나는에 할당하고있어 파일의 현재 행에서 읽은 날로부터 생성 된 객체. 이 개체는 에 처음으로 실행되지 않은에 비교되어 인덱싱 값이에 할당 되므로 일치하지 않으며 로 초기화 됩니다 .$d[datetime]$n$c1$c
다음 은 현재 날짜 / 시간 개체 $n에 추가하여 다음 예상 날짜로 채워집니다 1. 여기서 핵심 1D은 [decimal]문자 그대로 임을 의미합니다 . 어떤 이유로 정수를 a [datetime]에 추가하면 틱으로 해석되지만 부동 소수점을 추가하면 며칠로 해석됩니다. 따라서 이것은 $n다음 반복을 위해 채워집니다 .
결과는 현재 날짜가 "다음"날짜 (이전 날짜에 1을 더한 날짜)와 일치하지 않을 때마다 카운터가 재설정됩니다.
마지막으로 메시지가 출력됩니다.