题目
今天做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