现在的位置: 首页 > 综合 > 正文

鸟哥linux的简单sh程序设计 转

2013年12月05日 ⁄ 综合 ⁄ 共 2853字 ⁄ 字号 评论关闭

 

干嘛学习 Scripts

这个问题可有趣的很了,我为什么要学习 scripts 呢?不要学可不可以呀!?呵呵!如果您只想要『会用 Linux 就好的话,那么这一个部分确实可以先跳过去不看也没关系,不过,如果您想要更加的了解与控制 Linux ,使 Linux 运作更顺畅之外,还可以高枕无忧的让你的 Linux Server Internet 上面提供相关服务的话,那么 scripts 还是多少学一学吧!为什么呢?因为 scripts 可以设计到『很聪明的知道什么条件之下需要进行什么动作!』不要小看这个功能呦!当您不在计算机前面的时候,突然之间,主机被一些不明封包试图入侵了,这个时候如果你的 Linux 主机可以透过『当该封包尝试几次还是联机失败之后,就予以抵挡住该 IP 』,如果可以设计到如此功能的话,呵呵!那么可就不得了了!您的 Linux 主机就可以说是『好聪明呀! smart!

除了针对主机之外,其实 scripts 还有相当多的运用功能呦!例如您想要在 Linux 上面作你的作业,而这个作业是一些数值方面的计算,这个时候 Scripts 也可以帮您计算呦!还不需要用到 fortran, c 这类高阶的程序语言呢! scripts 本身就是一个可以用的 program 啰!相当的棒吧!其实, scripts 最开始被新手使用的功能就是『汇整一些在 command line 下达的连续指令,将他写入 scripts 当中,而由直接执行 scripts 来启动一连串的 command line 指令输出入!』例如: 防火墙连续规则 ( iptables ),开机加载程序的项目 ( 就是在 /etc/rc.d/rc.local 里头的资料 ) ,等等都是相似的功能啦! 其实,说穿了,如果不考虑 program 的部分,那么 scripts 也可以想成,仅是帮我们把一大串的指令汇整在一个档案里面,而直接执行该档案就可以执行那一串又臭又长的指令段!就是这么简单啦!

另外的另外,在编写 scripts 时,在 Linux 当中,最常使用的就是 vi 这一套文书编辑器了,所以啰,为了更简易的控管我们的 Linux ,嗯!还是学习一下好了啦!好不好呀! ^_^


scripts 的执行与第一支 scripts

·  scripts 的执行:

嗯!在上一章 bash shell 当中说了一堆变数啦!管线指令啦!等等的,都是为了接着而来的 scripts 的咚咚啦!什么是 script 啊?由字面上的意思来说, script 就是『脚本、剧本』的意思,那够清楚了吧!就是将我们要执行的内容写成一个『脚本』,让系统依据这个『脚本』来执行我们想要的东西!好了!现在我们来讨论一下怎么写 scripts 好了!基本上,一个 script 被执行的时候, bash 会据以判断执行的步骤为:

1.      如果读取到一个 Enter 符号( CR ),就尝试开始执行该行命令;

2.      如同前面 bash command 提到的,指令间的多个空白会被忽略掉;

3.      而空白行也将被忽略掉!,并且 tab 也是不会被理会的!

4.      至于如果一行的内容太多,则可以使用 / 来延伸至下一行;

5.      此外,使用最多的 # 可做为批注!任何加在 # 后面的字,将全部被视为批注文字而被忽略!

然后,在撰写一个 scripts 的时候,最好养成良好的习惯:

1.      先宣告使用的 shell 为何?(特别留意这一点,在某些状况中,例如 /etc/crontab 情况下,如果没有宣告使用的 shell ,常常会出现错误讯息而导致 scripts 无法被执行呦!)

2.      注明该 script 的内容功能、版本信息、作者、建文件日期等等

3.      每一个大步骤的主要功能(也顺便提供自己未来修改之用!)

那么 scripts 这个档案要如何来执行呢?执行的方法有两种:

·         一个是将该档案改成可以执行的属性,如chmod 755 scripts.file ,然后执行该档案;

·         另一种则是直接以 sh 这个执行档来执行 script 的内容,如 sh scripts.file

大致上就是这样啦!OK!那么还记得我们在前面一章已经说过了变量的设定方式了吧?好了,那么我们就以第一支 scripts 来将我们设定的变量直接给他 show 出来!嗯!来设计一下这支 script 吧!

·  建立你的第一支 script

好了,我们来建立第一支简单的 script 吧!最简单的一个例子,就是在屏幕上列出『 Hello ! How are you ?』,可以这样写:(注:最常使用来作为 shell scripts 的写作的软件,就是 vi 啦!有空真的要多熟悉一下 vi 呦!)
 

[root @test /root]# mkdir test; cd test  <==建立一个新的目录,所有的 scripts 都暂存在此!
[root @test test]# vi test01-hello.sh
#!/bin/bash                        <== # 之后加上 ! shell 的名称,用来宣告使用的 shell
# 这个脚本的用途在于列出 Hello ! How are you 在屏幕上
# 建檔日期: 2002/05/20
# Made by VBird
hello=Hello/ /!/ How/ are/ you/ /?      <==这就是变量啦!
echo $hello

[root @test test]# sh test01-hello.sh
Hello ! How are you ?                   <=输出的结果显示在屏幕上!

这里给他注意一下:

·         所有在 scripts 里面的东西,基本规则 ( 如变量设定规则 ) 需要与 command line 时相同;

·         scripts 的附档名最好为 .sh 提供他人的认识;

·         并非加上 .sh 就可以是执行档,还需要查看其属性中是否有 x 这个属性。

呵呵!很兴奋吧!你已经会写 scripts 了呦!已经具有初阶的程序设计能力啰!嗯!是该觉得高兴的!^_^...!好了,接着下来我们写稍微复杂一点的,若一个 script 里头有两个以上的变数要相互引用呢?呵呵!这个时候顺便来比较一下 " ' 的异同吧!
 

[root @test test]# vi test02-2var.sh
#!/bin/bash 
# 这个脚本用途在于引用两个变量,顺便比较一下 " ' 的异同
# Date: 2002/06/27
# Made by VBird
name="V.Bird"
myname1="My name is $name"
myname2='My name is $name'
echo $name
echo $myname1
echo $myname2

[root @test test]# sh test02-2var.sh
V.Bird
My name is V.Bird
My name is $name

看到输出的结果了吧!呵呵!没错!那个 " ' 最大的不同就是在于能不能保有『变量内容』啦!再提醒一次,那个单引号『 ' 』里头的数据都将变成『单纯的字符』而不是有特殊的字体呦!


卷标与运算符号:declare

OK!了解了变量的 scripts 写法

抱歉!评论已关闭.