一个简单脚本

计算自己还有几天过生日

 1  #!/bin/bash 
 2  echo  -e  "I will calculate you brithday .Please input you brithday(MMDD)" 
 3  read  brithday
 4  brithday_temp=$(echo $brithday | grep '[0-9]\{4\}')
 5  if [ "$brithday_temp"  ==  "" ]  ; then
 6      echo "You input is wrong !!"
 7      exit 0 
 8  fi
 9  now=$(date +%m%d)
 10 if [ "$brithday"  ==  "$now"   ] ; then 
 11     echo "Today is your brithday "
 12 elif [ "$brithday"   -gt   "$now"   ]   ;  then 
 13     year=$(date +%Y)
 14     brithday_second=$(date  --date="$year$brithday" +%s)
 15     now_second=$(date +%s)
 16     brithday_days_temp=$(($brithday_second - $now_second))
 17     brithday_days=$(($brithday_days_temp/60/60/24))
 18     echo "your brithday have $brithday_days days "
 19 else 
 20     year=$(( `date +%Y` + 1))
 21     brithday_second=$(date --date="$year$brithday" +%s)
 22     now_second=$(date +%s)
 23     brithday_days_temp=$(($brithday_second-$now_second))
 24     brithday_days=$(($brithday_days_temp/60/60/24))
 25     echo "your brithday have $brithday_days days "
 26 fi
 27 exit 0

执行结果:
这里写图片描述

这里写图片描述

这里写图片描述

设计思路:

1.生日的计算无关于年份,只在乎月份和日期,因此我们让用户只输入月份和日期。

2.进行检测看看是否有四个数字,如果没有就跳出。

3.比较结果有三种情况:

  1.等于now(即今天),输出Today is your brithday ,结束。
  2.大于now,计算生日那天到标准时间(即1970年1月1日)所经历的秒数,再计算今天到标准时间所经历的秒数,两数相减再进行转换既得天数,结束。
  3.小于now,给年份加1,计算同上,结束。

注意事项:

1.echo -e (-e 选项可以激活转义字符。如:\n,\t 等)
2.grep '[0-9]\\{4\\}' (正则表达式的用法,自行查阅)
3.if [ "$brithday_temp" == "" ] ; then
    1.[ ]中括号内的东西都要用空格来分隔,“一句话--疯狂空格”   
    2.不论变量或者是常量,一律用双引号括起来
    3.if与[] 不可以连起来写,但[] 可以与后面的内容连起来写(不建议这样操作)。如图:

这里写图片描述

   4.等于号一律用 ==  (PS:在bash中,= 和 == 号作用一样)
4. $( ) 与` ` (反单引号) 内的命令可以提前被执行(建议使用\$( ) )
5.elif [ "$brithday" -gt "$now" ] ; then
1.-gt:大于(Greater than)
2.-lt:小于(lesser than)
3.-eq:等于(equal)
4.-ge:大于等于(Greater or equal)
ps:以上都可以用人用的<,>,== 来替换
6. brithday_days=$(($brithday_days_temp/60/60/24))(计算东西时,就用“ $ ( ( 运算内容 ) ) ”来进行计算)
7.变量设置的三个常见问题 :
 1.变量的设置以一个 = (等于号)来进行设置
 2.= 两边不能有空格(是初学者常犯的问题)!!!
 3.只能是英文和数字,且开头不能是数字
8.单引号与双引号的问题:
1.单引号内的东西是什么就是什么,仅为一般字符
2.双引号内的东西代表的是什么就是什么,保留原有属性
9.脚本的追踪与调试:
 1.sh -n ***.sh   检测是否有语法问题,若没有,什么也不输出
 2.sh -x ***.sh   将脚本执行过程列出来(等价于gdb 中的step 命令了)。如图:(+号后面的就是命令串)

这里写图片描述

特殊提示: 脚本出错,还是先检查关于空格的问题吧!!!

写在最后:下一篇介绍一下SElinux的一些问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值