2006-10-13

30分钟搞定BASH脚本编程!

来源: 中国本站网 作者:佚名 评论 0 条
 

条件语句
条件语句可以使你决定是完成一个运作或是不去完成一个动作时,通过一些判定来实现,一般情况都是通过一些操作符来实现判定。
条件语句可以有许多实现方法,最多的情况是基于ifexpressionthen这种情况,也就是大家经常说的if判定语句。它的语法基本结构如下:
if[expression];
then
codeif'expression'istrue.
fi
一个最基本的使用if...then的例子
#!/bin/bash
if["foo"="foo"];then
echoexpressionevaluatedastrue
fi

这段代码执行if判定,假如foo等于foo的话,那么你就会执行then语句下的输出语句,最后通过fi来结束,这里我要强调一点,就是很多新手在输入源码时非凡是在if语句后面没有空格,在大括号后面没有空格,在等号两边没有空格,这些都会制造出一些麻烦的。
一个简单的控制if..then...else
#!/bin/bash
if["foo"="foo"];then
echoexpressionevaluatedastrue
else
echoexpressionevaluatedasfalse
fi

6.4通过变量进行判定控制
#!/bin/bash
T1="foo"
T2="bar"
if["$T1"="$T2"];then
echoexpressionevaluatedastrue
else
echoexpressionevaluatedasfalse
fi

7.循环结构
在这一节中,你将会学习for、while、untilloops循环
对于for循环它有一点不同于其他的编程语言,它有一点像VB中的foreach语句,就是所谓的递归的循环。
对于while循环,它其实是一个加强的if语句,假如它的条件为真,那么它就一直执行while循环中的语句中的内容。
7.1Forsample
#!/bin/bash
foriin$(ls);do
echoitem:$i
done

在第二行上,我们声明了一个i的变量,它将一直将ls命令的结果全部循环出来。其中do和done之间是所要执行的代码。
While循环例子
#!/bin/bash
COUNTER=0
while[$COUNTER-lt10];do
echoThecounteris$COUNTER
letCOUNTER=COUNTER 1
done
这里面大家可能看到一个-lt的命令选项,这里它代表小于等于
-eq等于
-ne不等于
-gt大于
-ge大于等于
-lt小于
-le小于等于
Until的例子
#!/bin/bash
COUNTER=20
until[$COUNTER-lt10];do
echoCOUNTER$COUNTER
letCOUNTER-=1
done

函数
对于大多数编程语言,你都可以调用函数来执行一段代码,这样可以使用减少重复的书写代码。
函数的例子
#!/bin/bash
functionquit{
exit
}
functionhello{
echoHello!
}
hello
quit
echofoo

在2-4行包含了一个quit函数,在5-7行包含了hello函数,假如你不是很确定这个脚本是是什么意思,那么我建议试试它。Noticethatafunctionsdon'tneedtobedeclaredinanyspecificorder.
当你运行这个脚本时你的程序将会最先调用hello函数,以后再调用quit函数最后才执行echo输出命令。
在函数中使用参数
#!/bin/bash
functionquit{
exit
}
functione{
echo$1
}
eHello
eWorld
quit
echofoo


这个脚本几乎和前一个脚本没有什么不能,但最主要的不同是e这个函数可以使用参数了。
用户接口
使用select命令制作简单的菜单
#!/bin/bash
OPTIONS="HelloQuit"
selectoptin$OPTIONS;do
if["$opt"="Quit"];then
echodone
exit
elif["$opt"="Hello"];then
共3页: 上一页 [1] 2 [3] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:你是否想知道 如何进入程序设计的领域  
下一篇:一劳永逸--教你构建通用数据访问方法
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号