一个简单脚本
来源:互联网 发布:windows php扩展下载 编辑:程序博客网 时间:2024/05/17 22:42
计算自己还有几天过生日
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 0
- 一个很简单脚本
- 一个简单的脚本
- 一个简单脚本
- 一个简单的俄罗斯方块脚本
- 一个简单的俄罗斯方块脚本
- 一个简单的俄罗斯方块脚本
- 一个简单的awk脚本
- 一个简单的shell脚本
- 一个最简单的脚本
- 一个简单的JS脚本
- uiautomator一个简单脚本运行
- unix shell 脚本 (最简单的一个)
- 一个简单的php LDAP认证脚本
- 一个简单的Perl多线程脚本
- 一个简单的MySQL数据库脚本
- 一个简单的鱼儿吃食的脚本
- 一个简单的SVN备份批处理脚本
- 一个简单实用的iptables设置脚本
- Bouncy Castle使用(一)【开始】
- 自定义View之自定义EditText带删除内容按钮控件
- thinkPHP+redis+实现抢购
- yii2框架dropDownList的下拉菜单用法介绍
- CentOS安装网卡驱动
- 一个简单脚本
- 王爽汇编第2.12节代码段,第34页
- leetcode-5. Longest Palindromic Substring(寻找最长回文子串)
- [JZOJ5135]逆序对/[HackerRank-101hack43]K-Inversion Permutations
- android_开机启动--桌面开启
- Python爬虫(4)——获取CSDN链接
- JAVA中sort函数的使用方法的个人总结
- 项目实训——第一周(2)
- 51nod 1067 Bash游戏 V2