首页 > 代码库 > Shell编程之三 —— shell script 脚本(未完待续)
Shell编程之三 —— shell script 脚本(未完待续)
1、脚本的语法构成:
shell script 是利用 shell 的功能所写的一个『程序(program)』,这个程序是使用纯文本文件(文件后缀名最好为sh文件,方便我们管理),将一些 shell 的语法与指令(含外部指令)写在里面, 搭通配符、配正规表示法、管线命令与数据流重定向、条件判断、循环逻辑等功能,以达到我们所想要的处理目的。
构成(常见):shell语法和外部指令
通配符 [a-z] [A-Z] ? *
正规表达式
管线命令 |
数据重定向 >> << > <
条件判断和循环
2、为什么要编写脚本,编写脚本的优缺点?
优点:
1、自动化管理的主要依据
查询登录档、追踪流量、监控用户使用主机状态、主机各项硬设备状态、 主机软件更新查询、更不要说得应付其他使用者的突然要求了
2、追踪与管理系统的重要工作
3、简单入侵检测功能
4、连续指令单一化
5、简易的数据处理
6、跨平台支持与学习历程较短
缺点:
虽然 shell script 号称是程序 (program) ,但实际上, shell script处理数据的速度上是不太够的。因为 shell script 用的是外部的指令与 bash shell 的一些默认工具,所以,他常常会去呼叫外部的函式库。因此,指令周期上面当然比不上传统的程序语言。 所以啰, shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上,就不够好了,因为 Shell scripts 的速度较慢,且使用的 CPU 资源较多,造成主机资源的分配不良。还好,我们通常利用 shell script 来处理服务器的侦测,倒是没有进行大量运算的需求!所以不必担心的。
3、编写脚本注意事项:
①、命令的执行是从上到下,从左到右执行
②、命令、选项、参数之间的多个空格都会被忽略掉
③、空白行也会被忽略掉,并且所推开的[tab]按键的空白同样会被忽略掉
④、如果读取到一个Enter 符号(CR),就尝试开始执行该行(该串)命令
⑤、如果一个命令太长,则可以使用‘ \[Enter] ’ 来跳行书写命令
⑥、#为注解,在执行命令的时候注解不执行
4、脚本档案的命名规则和执行方法和执行脚本化的差异
1、命名规则:一般以文件 ‘ .sh ‘ 命名 (如xxx.sh)
2、执行方法:
首先需要有执行权限才行: chmod u+x xxx.sh
执行方法:
①、以路径和修改变量(PATH) 来执行
路径包括相对路径和绝对路劲
在当前目录下执行: ./xxx.sh
不在当前目录下执行: ./opt/xxx.sh
修改PATH变量:
方法一:把该脚本文件放在PATH变量的文件夹下面执行
方法二:修改PATH变量的路径,添加该文件夹为默认的PATH路径
②、以source 来执行
source 脚本文件名(source xxx.sh)
上面两种执行方法①和②的区别:
使用①里面的执行方法时:该 script 都会使用一个新的bash 环境来执行脚本内的指令!也就是说,使用者种执行方式时, 其实脚本文件是在
子程序的 bash 内执行的。因此你的变量其实是在子程序bash内执行的。当在子程序执行完毕后子程序bash内的所有数据便被移除,因此在父程序
底下 “ echo $变量名 ” 的时候,就看不到任何东西。
使用②里面的source来执行脚本文件时:是在父程序shell中执行脚本,所以在执行“ echo $变量名 ” 的时候,就看的到变量的值
脚本执行的具体分析请参考:http://www.jb51.net/article/53924.htm
5、编写脚本的步骤(脚本里面需要些哪些注释信息):
· script 的功能
· script 的版本信息
· script 的作者与联络方式
· script 的版权宣告方式
· script 的 History (历史纪录)
· script 内较特殊的指令,使用『绝对路径』的方式来下达
· script 运作时需要的环境变量预先宣告与设定
· 良好的注释习惯和适当的[tab]退格功能
6、条件测试及控制流:
参考网站:http://blog.csdn.net/wklken/article/details/6566945; (基础知识和例题可以参考这个博客)
http://a3147972.blog.51cto.com/2366547/1284633;
http://www.jb51.net/article/54488.htm;
自己写的几个基础代码:
test指令测试和用法(以及test和 " [ ] "的区别):
条件判断式:
if......elif......else......fi 和 case 的语法 :http://www.cnblogs.com/l75790/p/7059296.html
函数function的语法:http://www.cnblogs.com/l75790/p/7060483.html
Shell编程之三 —— shell script 脚本(未完待续)