文档介绍:已经在运行它如果查看一下,可能会发现:您现在正在运行bash。因为bash是标准Linuxshell,并用于各种目的,所以,即使更改了缺省shell,bash可能仍在系统中某处运行。因为bash已在运行,以后运行的任何bash脚本都天生是有效利用内存的,因为它们与任何已运行的bash进程共享内存。如果正在运行的工具可以胜任工作,并且做得很好,为什么还要装入一个500K的解释器? 已经在使用它不仅在运行bash,实际上,您每天还在与bash打交道。它总在那里,因此学习如何最大限度使用它是有意义的。这样做将使您的bash经验更有趣和有生产力。但是为什么要学习bash编程?很简单,因为您已在考虑如何运行命令、CPing文件以及管道化和重定向输出。为什么不学习一种语言,以便使用和利用那些已熟悉和喜爱的强大省时的概念?命令shell开启了UNIX系统的潜能,而bash正是这个Linuxshell。它是您和机器之间的高级纽带。增长bash知识吧,这将自动提高您在Linux和UNIX中的生产力--就那么简单。 Bash困惑以错误方式学习bash令人十分困惑。许多新手输入"manbash"来查看bash帮助页,但只得到非常简单和技术方面的shell功能性描述。还有人输入"infobash"(来查看GNU信息文档),只能得到重新显示的帮助页,或者(如果幸运)略为友好的信息文档。尽管这可能使初学者有些失望,但标准bash文档无法满足所有人的要求,它只适合那些已大体熟悉shell编程的人。帮助页中确实有很多极好的技术信息,但对初学者的帮助却有限。这就是本系列的目的所在。在本系列中,我将讲述如何实际使用bash编程概念,以便编写自己的脚本。与技术描述不同,我将以简单的语言为您解释,使您不仅知道事情做什么,还知道应在何时使用。在此三部分系列末尾,您将可以自己编写复杂的bash脚本,并可以自如地使用bash以及通过阅读(和理解)标准bash文档来补充知识。让我们开始吧。环境变量在bash和几乎所有其它shell中,用户可以定义环境变量,这些环境变量在以ASCII字符串存储。环境变量的最便利之处在于:它们是UNIX进程模型的标准部分。这意味着:环境变量不仅由shell脚本独用,而且还可以由编译过的标准程序使用。当在bash中“导出”环境变量时,以后运行的任何程序,不管是不是shell脚本,都可以读取设置。一个很好的例子是vipw命令,它通常允许root用户编辑系统口令文件。通过将EDITOR环境变量设置成喜爱的文本编辑器名称,可以配置vipw,使其使用该编辑器,而不使用vi,如果习惯于xemacs而确实不喜欢vi,那么这是很便利的。在bash中定义环境变量的标准方法是: $myvar='Thisismyenvironmentvariable!' 以上命令定义了一个名为"myvar"的环境变量,并包含字符串"Thisismyenvironmentvariable!"。以上有几点注意事项:第一,在等号"="的两边没有空格,任何空格将导致错误(试一下看看)。第二个件要注意的事是:虽然在定义一个字时可以省略引号,但是当定义的环境变量值多于一个字时(包含空格或制表键),引号是必须的。第三,虽然通常可以用双引号来替代单引号,但在上例中,这样做会导致错误。为什么呢?因为使用单引号禁用了称为扩展的bash特性,其中,特殊字符和字符系列由值替换。例如,"!"字符是历史扩展字符,bash通常将其替换为前面输入的命令。(本系列文章中将不讲述历史扩展,因为它在bash编程中不常用。有关历史扩展的详细信息,请参阅bash帮助页中的“历史扩展”一节。)尽管这个类似于宏的功能很便利,但我们现在只想在环境变量后面加上一个简单的感叹号,而不是宏。现在,让我们看一下如何实际使用环境变量。这有一个例子: $echo$myvar Thisismyenvironmentvariable! 通过在环境变量的前面加上一个$,可以使bash用myvar的值替换它。这在bash术语中叫做“变量扩展”。但是,这样做将怎样: $echofoo$myvarbar foo 我们希望回显"fooThisismyenvironmentvariable!bar",但却不是这样。错在哪里?简单地说,bash变量扩展设施陷入了困惑。它无法识别要扩展哪一个变量:$m、$my、$myvar、$myvarbar等等。如何更明确清楚地告述bash引用哪一个变量?试一下这个: $echofoo${myvar}bar fooThisismyenvironmentvariable!bar 如您所见,当环境变量没有与周围文本明显分开时,可以用花括号将它括起。虽然$myvar可以更快输入,并且在大多数情况下正确工作,但${myvar}却能在