Linux shell编程之判断闰年(双中括号[[]]的使用)

题目

今天做linux作业 碰到了一个判断闰年的题目
首先了解一下什么是闰年
闰年:年份所代表的的数字,能被4整除但是不能被100整除,或者能被400整除的称为闰年。
用c++写的话就是

int year;
    cin>>year;
    if((year%4==0&&year%100!=0)||(year%400==0))
    cout<<"闰年"<<endl;
    else 
    cout<<"非闰年"<<endl;

很简单,但是用shell就遇到了一个坑
shell中的if要用中括号号括起来。当判断的条件多的时候就容易懵逼而不知道改用什么括号,我今天下午就懵逼了,条件一直用中括号括,然后疯狂报错,然后只能委屈求全多写了一步判断如下。

#! /bin/bash
read -p "请输入要判断的年份" year
if  [ $(($year%4)) == 0 ] && [ $(($year%100)) != 0 ]
then
echo "$year 年是闰年"
elif [ $(($year%400)) == 0 ]
then
echo "$year 年是闰年"
else
echo "$year 年不是闰年"
fi

今天晚上做完作业,又研究了一下shell中的if 发现了一个好东西 [[ ]] ——双中括号 ,在[[ ]]之间所有的字符都不会发生文件名扩展或者单词分割所以办法这不就来了吗!

代码

给出代码之前 先含泪的总结两点
(1)在shell编程中 =号用来赋值的话两边都不能加空格
(2)==号用来判断的话两边都要加空格,还有if外的括号两边也要加空格
最终代码

#! /bin/bash
read -p "请输入要判断的年份" year
if  [[ $(($year%4)) == 0 && $(($year%100)) != 0 ]] || [ $(($year%400)) == 0 ]
then
echo "$year 年是闰年"
else
echo "$year 年不是闰年"
fi

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值