shell 脚本学习

距离上一次写东西又隔了一段时间了,期间一直跟着私房菜学习,还是没养成定期做记录的习惯,今天就来写第一个脚本的编写吧。

经过几天的积累,学习了下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#”进行运算错误消除。

脚本虽然简单,一些细节方面可能也要再修改,不过刚开始来说还是收货颇多的,继续努力!

时间: 2024-10-18 13:52:34

shell 脚本学习的相关文章

笔记——shell脚本学习指南

<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超过64个字符. 2.在某些系统上,命令行部分包含了命令的完整路径名称.不过有些系统却不是这样:命令行的部分会原封不动地传递给被引用的程序. 3.别在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用的程序. 4.你需要知道解释其的完整路径名称.这可以用来规避可移植问题,因为不同的厂商可能将同样的东西放

shell脚本学习指南

以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bash shell 脚本的第一行,#!之后应该是什么? 如果拿这个问题去问别人,不同的人的回答可能各不相同.我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的“’茴’字四种写法”了. 在多数情况下,以上五种写法都是等价的.但是,写过程序的人都知道:“少数情况”里往往隐藏

shell脚本学习与总结

shell脚本学习总结,东西很多,供初学者参考. shell脚本是区分大小写的. 2.Unix特殊字符有: ( ; $ ? & * () [] ` ' " + 使用其时要进行转义() 3.Shell的注释以#开头 4.函数的定义Function fuction_name(){ Command to execute} 调用时直接用function_name. 5.控制结构 1)If...then语句 If [ test_command ]    Then    Commandsfi2)If

shell脚本学习笔记系列--1

一.学好shell编程的知识储备 1.相关Linux系统命令应用: 2.Vi/vim 编辑器的熟练使用,相关客户端软件的设置: 3.基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp等. 补充:清空日志的三种方法: 1)echo  " " > filename.log 2)>filename.log 3)cat  /dev/null > filename.log 注:工作中有的时候不能删除(日志)文

shell脚本学习笔记:通过shell实现linux用户管理和监控

学习shell做的第一个脚本,感谢云知梦李强强老师的shell编程教程 创建shell脚本文件: touch menu.sh touch index.sh touch welcome.sh 赋予脚本文件可执行权限: chmod a+x menu.sh index.sh welcome.sh menu.sh #!/bin/bash #menu.sh function menu(){ title="My Home" name="Randy" time=`date +%Y

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解

Shell脚本学习一:shell三种引号学习

一.Shell中变量的声明和引用 [[email protected] ~]# var1=Hello [[email protected] ~]# echo $var1 Hello [[email protected] ~]# echo ${var1}World HelloWorld 在Shell中,变量的引用使用$. 上面的代码中,$var1就是对变量var1的引用,输出的结果是Hello. 如果想链接其他字符,将变量放到大括号{}里面,然后在后面跟上其他内容. 例如上面的代码中:${var1

Shell 脚本学习笔记十:Shell输入输出重定向

command > file       将输出重定向到 file. command < file       将输入重定向到 file. command >> file     将输出以追加的方式重定向到 file. n > file              将文件描述符为 n 的文件重定向到 file. n >> file             将文件描述符为 n 的文件以追加的方式重定向到 file. n >& m             

shell脚本学习-文件包含

跟着RUNOOB网站的教程学习的笔记 和其他语言一样,shell也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件.shell文件包含的语法有两种形式 . filename  #也就是一个英文句号后面跟着想要包含的文件名,注意中间有一个空格分开 source filename 实验的时候遇到一个问题,第二种文件包含的形式在sh中不能用,而这两种文件包含形式在bash中是都可以使用的 实例 创建两个shell脚本文件 test1.sh代码如下: #!/bin/bash # a