距离上一次写东西又隔了一段时间了,期间一直跟着私房菜学习,还是没养成定期做记录的习惯,今天就来写第一个脚本的编写吧。
经过几天的积累,学习了下shell脚本的编写,目前掌握的还不太成熟,凡事从小入手肯定是没错的,先写个简单的吧(难的也不会写o(╯□╰)o)。
这个脚本的执行方法,就是输入生日来计算当前日期距离生日还有多少天,如果已经过完生日则计算来年生日的时间。
#!/bin/bash #Program: # Calculate how long it takes to have a birthday . #History MG First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/sbin:~/bin export PATH echo -e "输入你的生日,格式:2016/04/07" while [ "$bir" == "" ] do read -p "请输入你的生日:" bir done mbir=$(date -d "$bir" +%j) curdate=$(date +%j) difdate=$((10#$mbir-10#$curdate)) #这里之所以变量之前加10#是将其转换为10进制再来进行计#算,不然后默认为8进制会报错。 if [ "$difdate" == 0 ];then echo "Happy birthday to you!" #今天过生日 elif [ "$difdate -lt 0 ];then echo "And have $((-$difdate+365)) days to live." else echo "And have $difdate days to live."
主要的还是利用date命令来进行日期的加减,通过read命令来进行用户输入生日,唯一需要注意的是换算成天数之后进行相减会出现“value too great for base”这个错误,网上查了资料说是要换算成10进制才可以,变量前加“10#”进行运算错误消除。
脚本虽然简单,一些细节方面可能也要再修改,不过刚开始来说还是收货颇多的,继续努力!
本文出自 “积小流,成江海” 博客,请务必保留此出处http://goodjoe.blog.51cto.com/9173556/1761389
原文地址:http://goodjoe.blog.51cto.com/9173556/1761389