2006-10-13

30分钟搞定BASH脚本编程!

来源: 中国本站网 作者:佚名 评论 0 条
  chu888@263.net
一个最简单的脚本
这篇指南将通过一些例子来帮助大家学习功能强大的shell脚本编程.
在这一节中我将学习一些简单的脚本,它将有利于你深入学习一些知识。
一个最经典的HelloWorld程序
#!/bin/bash
echoHelloWorld

这个脚本只有二行,它的第一行这个脚本程序由那个程序来解释.第二行只有一个简单的动作,它的功能是在终端上打印出一行”HelloWorld”。假如你测试着执行这个命令时(./hello.sh),你将会得到一个commandnotfound的信息,这种情况大部分可能是你的第一行#!/bin/bash这个程序有问题,你一定要确保bash可以找到并且可用。(一般情况下你还要对这个脚本附一个可执行权限)
#chmodu xhello.sh
一个非常简单的备份脚本
#!/bin/bash
tar-cZf/var/my-backup.tgz/home/me/

在这个脚本中,它替换了上一个例子的将一行信息打印在终端上的功能,取尔代之的是一个备份/home目录的tar备份命令。
关于重定向的一些信息
最基本的理论基础
这里有对于三个文件的重定向定义:stdin(标准输入),stdout(标准输出)andstderr(标准错误输出)(std=standard).
基本上你可以
1.重定向stdout到一个文件
2.重定向stderr到一个文件
3.重定向stdout到stderr
4.重定向stderr到stdout
5.重定向stderr到stdout中并且成为一个文件
6.重定向stderrandstdouttostdout
7.重定向stderrandstdouttostderr
在Linux中1代表'标准输出',2代表’标准错误’
标准输出
这个例子将会使ls的显示结果重定向到一个文件中.
ls-l>ls-l.txt

标准错误
这个例子将会使grep命令在运行过程中出现的错误输出到一个文件中
grepda*2>grep-errors.txt

管道
这一节我们将解释一个非常简单的并且你以后一定会用到的功能,它就是管道。
为什么大家都会用到管道?
管道可以使你非常方便的将一个程序的结果转向到另外一个程序中。
一个sed的例子
这个例子使用了非常简单的管道功能:
ls-l|sed-e"s/[aeio]/u/g"

当我们执行以下命令后:首先ls–l会先执行并且它会输出结果信息但是假如它的后面跟是一个管道符的话,那么它就会将结果重新定向到sed这个程序中,sed使用了替换功能,所以这个例子执行完会,会将ls–l结果中所有含有aeio的英文单词替换成单词u.
通过另外的方法实现ls–l*.txt
也许这种方法不同于ls–l*.txt,但是它避免了出现一条NoSuchfileOrDirectory这种信息。
ls-l|grep".txt"

当ls–l执行后,它会将程序结果输出到grep这个程序中,并且去匹配.txt这条信息。
变量
你可在任何编程语言中使用变量,但是在脚本编程中它们是没有类型的,简称弱类型编程语言,在这个变量中可以保含一个数字,一个字符串,一个单词等。你并不需要声明这个变量,它会在引用这个变量时创建它。
使用变量来实现一个简单的HelloWorld
#!/bin/bash
STR="HelloWorld!"
echo$STR

第二行建立一个STR的变量并且为其附了一个“HelloWorld”的字符串变量值。当在这个变量前面加上一个$符号时,我们就将会得到这个变量的值。
例子(一个使用变量的备份脚本)
#!/bin/bash
OF=/var/my-backup-$(date Ymd).tgz
tar-cZf$OF/home/me/

局部变量
局部变量的生命是有限的,请看下面的例子
#!/bin/bash
HELLO=Hello
functionhello{
localHELLO=World
echo$HELLO
}
echo$HELLO
hello
echo$HELLO
共3页: 上一页 1 [2] [3] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:你是否想知道 如何进入程序设计的领域  
下一篇:一劳永逸--教你构建通用数据访问方法
    评论加载中…
 推荐文章
     

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