shell 脚本学习

Shell脚本能帮助我们很方便的去管理服务器,因为我们可以指定一个任务计划定时去执行某一个shell脚本实现我们想要需求。这对于linux系统管理员来说是一件非常值得自豪的事情。现在的139邮箱很好用,发邮件的同时还可以发一条邮件通知的短信给用户,利用这点,我们就可以在我们的linux服务器上部署监控的shell脚本,比如网卡流量有异常了或者服务器web服务器停止了就可以发一封邮件给管理员,同时发送给管理员一个报警短信这样可以让我们及时的知道服务器出问题了。
有一个问题需要约定一下,凡是自定义的脚本建议放到/usr/local/sbin/目录下,这样做的目的是,一来可以更好的管理文档;二来以后接管你的管理员都知道自定义脚本放在哪里,方便维护。
 

shell脚本的基本结构以及如何执行
 

Shell脚本通常都是以.sh 为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。test.sh中第一行一定是 “#! /bin/bash” 它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释,在前面讲过的。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。当然这些注释并非必须的,如果你懒的很,可以省略掉,但是笔者不建议省略。因为随着你工作时间的增加,你写的shell脚本也会越来越多,如果有一天你回头查看你写的某个脚本时,很有可能忘记该脚本是用来干什么的以及什么时候写的。所以写上注释是有必要的。另外系统管理员并非你一个,如果是其他管理员查看你的脚本,他看不懂岂不是很郁闷。该脚本再往下面则为要运行的命令了。
 

[root@moyea sbin]# sh test.sh   (显示如下)
 

2012年 06月 27日 星期三 11:32:44 CST
hello world
 shell 脚本执行很简单,直接也可以这样执行

[root@moyea sbin]# chmod +x test.sh /usr/local/sbin/tst.sh (给执行权限)

[root@moyea sbin]# ./test.sh

 

2012年 06月 27日 星期三 11:32:44 CST
hello world
 

默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个执行权限,那样就可以直接使用’./filename’ 执行这个脚本了。另外使用sh命令去执行一个shell脚本的时候是可以加-x选项来查看这个脚本执行过程的,这样有利于我们调试这个脚本哪里出了问题。
 

 [root@moyea sbin]#    sh -x tesh.sh (显示如下)
+ date
2012年 06月 27日 星期三 11:37:49 CST
+ echo 'hello world'
hello world
 

该shell脚本中用到了’date’这个命令,它的作用就是用来打印当前系统的时间。其实在shell脚本中date使用率非常高。有几个选项笔者常常在shell脚本中用到:
 

[root@moyea sbin]# date "+%y%m%d"
120627
[root@moyea sbin]# date -d "-1 day" "+%Y%m%d"
20120626
[root@moyea sbin]# date -d " day" "+%Y%m%d"
20120628
[root@moyea sbin]# date -d "1 day" "+%Y%m%d"
20120628
[root@moyea sbin]# date -d "2 day" "+%Y%m%d"
20120629
[root@moyea sbin]# date -d "+1 day" "+%Y%m%d"
20120628
[root@moyea sbin]# date -d "+1 day" "+%Y%m%d"
20120628
[root@moyea sbin]# date -d "-1 month" "+%Y%m%d"
20120527
[root@moyea sbin]# date -d "-1 month" "+%Y%m%d"
20120527
[root@moyea sbin]# date -d "-1 year" "+%Y%m%d"
20110627
[root@moyea sbin]# date +%w
3
 

【shell脚本中的变量】
在shell脚本中使用变量显得我们的脚本更加专业更像是一门语言,开个玩笑,变量的作用当然不是为了专业。如果你写了一个长达1000行的shell脚本,并且脚本中出现了某一个命令或者路径几百次。突然你觉得路径不对想换一下,那岂不是要更改几百次?你固然可以使用批量替换的命令,但是也是很麻烦,并且脚本显得臃肿了很多。变量的作用就是用来解决这个问题的。
 

[root@moyea sbin]# vim tset2.sh (我们建立第二个测试脚本)

 

本文出自 “linux系统与网络” 博客,谢绝转载!

你可能感兴趣的:(shell,脚本学习)