问题描述

在Linux终端下编写一个shell脚本,要求通过输入一个生日日期,计算下一次生日还有多少天。

代码编写

#!/bin/bash
#xueqijun
#filename:birth.sh
#输入一个日期
read -p "Input your birthday like 20010311:" date1
#利用正则表达式判断日期格式是否正确
if [ "$(echo $date1 | grep "[0-9]\{8\}")" == "" ];thenecho "Input error!"exit 1
fi
m=`date --date="$date1" +%m`#生日的月份
d=`date --date="$date1" +%d`#生日的天数
y=`date +%Y`#现在的年份
date_now=`date +%s`#现在距离1970年1月1日的秒数
birth=`date --date="$y$m$d" +%s`#今年生日的日期距离1970年的秒数
internal=$(($birth-$date_now))#计算两者之差
#判断当天是否是生日
if [ "$((internal/60/60/24))" -eq "0" ] ; thenecho -e "\033[32;5mToday is your birthday.Happy birthday to you!\033[0m"exit 0
#判断生日是否已过
else if [ "$internal" -lt "0" ] ;thenbirth=`date --date="$(($y+1))$m$d" +%s`internal=$(($birth-$date_now))fi
#输出距离下次生日剩余天数
echo -e "There are \033[32;1m$((internal/60/60/24+1))\033[0m days when your birthday comes."
exit 0
fi

样例输入

注意问题

1.if [ "$internal" -lt "0" ] ;then判断中[  ]中间要留有空格

2.注意反引号`和${}的区别,反引号``先执行其中的命令,将结果赋值

Linux的shell计算下一次生日相关推荐

  1. Linux shell计算两个文件的交集,并集和差集

    本文介绍linux下shell计算两个文件的交集,并集和差集的方法,提供完整测试命令与演示. 测试文件 a.txt a c 1 3 d 4 b.txt a b e 2 1 5 计算并集 sort -u ...

  2. linux shell 计算时间差值

    linux shell 计算时间差值 1,linux shell 计算时间差值 1,linux shell 计算时间差值 #!/bin/bash # 计算时间差 date1=$(date +" ...

  3. Linux Bash Shell j简单入门

    BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     ...

  4. Linux Bash Shell编程快速入门

    BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     ...

  5. linux 终端 画圆,Linux Bash Shell快速入门

    BASH的基本语法 ·最简单的例子-- Hello World! ·关于输入.输出和错误输出 ·BASH中对变量的规定(与C语言的异同) ·BASH中的基本流程控制语法 ·函数的使用 2.1最简单的例 ...

  6. 从常用指令入手了解Linux系统 (Learn Linux from shell commands)

    如果直接学习Linux系统的一些理论知识,可能比较枯燥,那么不如结合Linux各种各样有趣的命令,边自己尝试一些输入输出获得的一些成果,边了解与这些输入输出相关的Linux系统的知识,可能会比较有趣吧 ...

  7. linux shell脚本if,linux的shell脚本中if,for,while的解析与应用

    linux的shell中有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),它们对我们平时的脚本编写和命令输入都有很大的作用,掌握了这些一定会对我们有很大的帮助. 一. ...

  8. linux 自动启动shell 和 init概述

    1.linux运行级别 linux启动之后会在一个级别运行,下面列出了这些运行级别: 0 系统停止 1 单用户系统,不需要登陆 2 多用户系统但不支持NFS,命令行模式登陆 3 完整多用户模式,命令行 ...

  9. linux常用SHELL

    linux 常用SHELL 1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2.查看进程 按内存从大到小排列 ps -e -o "%C : ...

  10. linux bash shell之declare

    linux bash shell之declare declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式.命令declare是 ...

最新文章

  1. 小米2s屏幕_米家空气净化器3VS小米空气净化器2 成熟设计的优势
  2. 今日可抢回程火车票,实测两款GitHub开源抢票插件,所有坑我们都帮你踩过了...
  3. 洛谷—— P1869 愚蠢的组合数
  4. 加装的硬盘进入后点不了文件夹_在外接移动硬盘上制作win to go教程
  5. 如何通过ssh登录linux,如何用SSH登录linux?
  6. el-tooltip位置不灵活_要提高步伐移动的灵活性,注意这5点,加以改正,步伐不再沉重...
  7. debian 安装_如何在 Debian/Ubuntu 系统中检查程序包是否安装?
  8. Android MVP和Dagger2
  9. [NLP] 酒店名归类
  10. 新中大银色快车财务数据完美迁移到用友NC65
  11. NFT游戏系统开发(NFT元宇宙系统定制开发)
  12. 部署3PAR VSP5.0.9.2监控3PAR实时邮件告警状态
  13. 常用web服务器架构理解
  14. P1308 [NOIP2011 普及组] 统计单词数
  15. aardio - MsSql数据库+虚表示例
  16. kinect使用手册
  17. Linux中几个你不常用,但却很有用的命令
  18. lsof Linux
  19. 技术分享 | 无人驾驶汽车的眼睛
  20. 中小企业怎样搭建软件安全开发流程和规范

热门文章

  1. 微信小程序 一键授权 给第三方平台代开发管理(一,创建第三方平台)
  2. 《引爆点》学习笔记二
  3. MAC下如何解压.bin文件
  4. mac u盘linux 双系统安装教程,苹果电脑怎么安装双系统 苹果电脑安装双系统教程...
  5. ok6410linux usb驱动,linux OK6410 LED驱动
  6. 河北化工医药职业技术学院学计算机怎么样,河北化工医药职业技术学院宿舍条件怎么样 男生女生宿舍图片...
  7. 练习-Java类和对象之包的定义(17)
  8. 根据投资回报率(ROI)进行决策
  9. 苹果cms vod.html,苹果cms
  10. 【密码学相关】常用的期刊,会议,实验室