(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
$c
1
$c
다음 은 현재 날짜 / 시간 개체 $n
에 추가하여 다음 예상 날짜로 채워집니다 1
. 여기서 핵심 1D
은 [decimal]
문자 그대로 임을 의미합니다 . 어떤 이유로 정수를 a [datetime]
에 추가하면 틱으로 해석되지만 부동 소수점을 추가하면 며칠로 해석됩니다. 따라서 이것은 $n
다음 반복을 위해 채워집니다 .
결과는 현재 날짜가 "다음"날짜 (이전 날짜에 1을 더한 날짜)와 일치하지 않을 때마다 카운터가 재설정됩니다.
마지막으로 메시지가 출력됩니다.