学习 Shell Scripts
假如您真的很想要走信息这条路,并且想要好好的管理好属于您的主机,那么,别说鸟哥不告诉您, Shell Scripts 真的是必须要学习的一项课题呢!基本上, shell script 有点像是早期的批次档, 亦即是将一些指令汇整起来一次执行,但是 Shell script 拥有更强大的功能,那就是, 他能够进行类似程式 (program) 的撰写,并且,无需经过编译 (compiler) 就能够执行, 真的很方便。加上,我们可透过 shell script 来简化我们日常的工作管理, 而且,整个 Linux 环境中,一些服务 (services) 的启动都是透过 shell script 的, 假如您对于 script 不了解,嘿嘿!发生问题时,可真是会求助无门喔! 所以,好好的学一学他吧!
1. 什么是 Shell Script
  1.1 干嘛学习 shell scripts?
  1.2 第一支 script 的撰写和执行
  1.3 撰写 shell script 的良好习惯建立
2. 简单的 shell script 练习:
3. 善用判断式:
  3.1 利用 test 指令的测试功能
  3.2 利用判断符号 [ ]
  3.3 Shell script 的预设变数($0, $1...)
4. 条件判断式:
  4.1 利用 if .... then
  4.2 利用 case ..... esac 判断
  4.3 利用 function 功能
5. 循环 (loop)
  5.1 while....do....done, until....do....done
  5.2 for...do...done
6. shell script 的追踪和 debug
7. 本章习题练习
--------------------------------------------------------------------------------
什么是 Shell scripts ?
这个有趣的问题赶紧来回答看看,什么是 shell script 呢? shell 我们在 认识 bash 当中已提过了,那是个文字接口底下让我们和系统沟通的一个工具接口,那么 script 是啥? 字面上的意义, script 是『脚本、剧本』的意思。整句话是说, shell script 是针对 shell 所写的『剧本!』 什么东西啊?呵呵!其实, shell script 是利用 shell 的功能所写的一个『程式 (program)』,这个程式是使用纯文字文档,将一些 shell 的语法和指令写在里面, 搭配正规表示法、管线命令和数据流重导向等功能,以达到我们所想要的处理目的。
所以,简单的说, shell script 就像是早期 DOS 年代的批次檔 (.bat) ,最简单的功能就是将许多指令汇整写在一起, 让使用者很轻易的就能够 one touch (执行一个档案 "shell script" ,就能够一次执行多个指令), 而, shell script 更提供数组、循环、条件和逻辑判断等重要功能,让使用者也能够直接以 shell 来撰写程式,而不必使用类似 C 程式语言等传统程式撰写的语法呢!
那,这么说您能够了解了吗?是的! shell script 能够简单的被看成是批次档, 也能够被说成是个程式语言,且这个程式语言由于都是利用 shell 和相关工具指令, 所以无需编译即可执行,且拥有不错的除错 (debug) 工具,所以,他能够帮助系统管理员快速的管理好主机。
--------------------------------------------------------------------------------
干嘛学习 shell scripts?
这是个好问题,我又干嘛一定要学 shell script ?我又不是信息人,没有写程式的概念, 那我干嘛还要学 shell script 呢?不要学可不能够啊?呵呵~假如 Linux 对您而言, 您只是想要『会用』而已,那么,无需学 shell script 也还无所谓,这部分先给他跳过去, 等到有空的时候,再来好好的瞧一瞧。但是,假如您是真的想要玩清楚 Linux 的来龙去脉, 那么 shell script 就不可不知,为什么呢?因为:
自动化管理的重要依据:
不用鸟哥说您也知道,管理一部主机真不是件简单的事情,每天要进行的任务就有: 查询登录档、追踪流量、监控使用者使用主机状态、主机各项硬设备状态、 主机软件更新查询、更不要说得应付其他使用者的突然需要了。而这些工作, 您想要自行手动处理,还是写个简单的程式来帮您每日自动处理分析,若有问题才通知您呢? 当然是让系统自动工作比较好,对吧!呵呵~这就得要良好的 shell script 来帮忙的啦!
追踪和管理系统的重要工作:
虽然我们还没有提到服务启动的方法,但是,这里能够先提一下,我们 Linux 系统的服务 ( services ) 启动的接口,在 /etc/init.d/ 这个目录下,任何的档案都是 scripts ; 另外,包括开机 (booting) 过程也都是利用 shell script 来帮忙搜寻系统的相关设定数据, 然后再代入各个服务的设定参数啊!举例来说,假如我们想要重新启动系统登录文档, 能够使用:『/etc/init.d/syslogd restart』,那个 syslogd 档案就是 script 啦! 另外,我曾在某一代的 FC 上面发现,启动 MySQL 这个数据库服务时,确实是能够启动的, 但是屏幕上却老是出现『failure』,后来才发现,原来是启动 MySQL 那个 script 会主动的以『空的密码』去尝试登入 MySQL ,但我修改过 MySQL 的密码啰~当然就登入失败~ 后来改了改 script ,就略去这个问题啦!如此说来, script 确实是需要学习的啊!
简单入侵侦测功能:
当我们的系统有异状时,大多会将这些异状记录在系统记录器,也就是我们常提到的『系统登录文档』, 那么我们能够在固定的几分钟内主动的去分析系统登录文档,若察觉有问题,就立即通报管理员, 或是立即加强防火墙的设定规则,如此一来,您的主机可就能够达到『自我保护』的聪明学习功能啦~ 举例来说,我们能够通过 shell script 去分析『当该封包尝试几次还是联机失败之后,就予以抵挡住该 IP』之类的举动,例如鸟哥写过一个关于抵挡砍站软件的 shell script , 就是用这个想法去达成的呢!
连续指令单一化:
其实,对于新手而言, script 最简单的功能就是:『汇整一些在 command line 下达的连续指令,将他写入 scripts 当中,而由直接执行 scripts 来启动一连串的 command line 指令输出入!』例如: 防火墙连续规则 ( iptables ),开机加载程式的项目 ( 就是在 /etc/rc.d/rc.local 里头的数据 ) ,等等都是相似的功能啦! 其实,说穿了,假如不考虑 program 的部分,那么 scripts 也能够想成,仅是帮我们把一大串的指令汇整在一个档案里面, 而直接执行该档案就能够执行那一串又臭又长的指令段!就是这么简单啦!

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!