lee*_*lee 20 command-line time
如何在 Linux 终端中找出 2014 年和 2020 年之间的闰年?
有没有办法使用一些代码,比如$cal
- 有什么可以直接显示 2014 年到 2020 年之间哪些年份是闰年?
pLu*_*umo 40
您可以使用date
的退出代码来检查闰年,依赖于date
为无效日期生成非 0 退出代码的行为,显然在非闰年中没有 2 月 29 日:
date -d $year-02-29 &>/dev/null
echo $?
Run Code Online (Sandbox Code Playgroud)
作为一个函数:
isleap() { date -d $1-02-29 &>/dev/null && echo is leap || echo is not leap; }
Run Code Online (Sandbox Code Playgroud)
用法:
$ isleap 2019
is not leap
$ isleap 2020
is leap
Run Code Online (Sandbox Code Playgroud)
关于你的问题:
如何在 Linux 终端中找出 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
Run Code Online (Sandbox Code Playgroud)
小智 9
只是@RoVo 答案的一个变体......
for a in {2014..2020}
do
date -d $a-02-29 +"%Y" 2>/dev/null
done
Run Code Online (Sandbox Code Playgroud)
date -d $a-02-29 +"%Y" 2> /dev/null
将 date 设置为 2 月 29 日并打印年份,忽略发生的任何错误。
在 Stack Overflow 上,anubhava提供了一个优雅的解决方案:
Run Code Online (Sandbox Code Playgroud)#!/bin/bash (( !($1 % 4) && ( $1 % 100 || !( $1 % 400) ) )) && echo "leap year" || echo "not a leap" exit 0
将上述内容保存在名为isleap
.
不要忘记设置执行权限:
chmod +x isleap
Run Code Online (Sandbox Code Playgroud)
测试一下:
$ ./isleap 1900
not a leap
$ ./isleap 2000
leap year
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4909 次 |
最近记录: |