替换-部分一
#!/bin/bash
 
# make_page - A script to produce an HTML file
 
cat <<- _EOF_
    <HTML>
    <HEAD>
        <TITLE>
        My System Information
        </TITLE>
    </HEAD>
 
    <BODY>
    <H1>My System Information</H1>
    </BODY>
    </HTML>
_EOF_
 
现在,我们让脚本开始工作,让我们提高它。立刻,我们将做一些修改因为我们想更懒。在上面这个脚本中,我们看见短句”My System Information”是重复的。这简直是浪费输入(额外的工作!)所以我们将其修改为:
#!/bin/bash
 
# make_page - A script to produce an HTML file
 
title="My System Information"
 
cat <<- _EOF_
    <HTML>
    <HEAD>
        <TITLE>
        $title
        </TITLE>
    </HEAD>
 
    <BODY>
    <H1>$title</H1>
    </BODY>
    </HTML>
_EOF_
正如你所看到的,我们在脚本的开头添加了一行并用$title替换掉两个短句” My System Information”
变量
我们所做的是介绍发生在大部分编程语言中的非常基本的概念,变量。变量是内存的一部分能被用来存储信息和被某个名称提及。就我们的脚本来说,我们创建一个叫”title”的变量并替换内存中的短句” My System Information”。在这个脚本中包含了我们的HTML,我们使用”$title”来告诉脚本替换变量的内容。
正如我们将看到的,shell执行各种不同类型的像它处理命令的替换。通配符是一个例子。当shell读取到一行中所包含的一个通配符,它展开这个通配符的意思然后继续处理命令行。要查看这个动作,尝试这个:
[me@linuxbox me]$ echo *
变量被shell以同样的方式来对待。无论什么时候shell 看到以”$”开头的单词,它会设法查出什么被赋予给这个变量并替换它。
怎样创建一个变量
要创建一个变量,将一行包含变量名跟随等号的内容放到你的脚本里。不允许空格。在等号后面,分配你想要存储的信息。注意到在等号的两边不允许空格。
变量名从哪儿来?
你做好它。那是正确的;你开始选择你变量的名称。有一些规则。
1.       它必须以字母开头
2.       它不能包含空格在里面。可以用下划线替代。
3.       不要使用标点符号。
4.       不要使用已经被bash所认知的关键词。它们被叫做保留字并且不能被用来作为变量名。如果你使用了其中的某个保留字,bash将会混淆。要看保留字的名单,使用help命令。
这个会助长我们的懒惰吗?
标题变量的额外部分用两种方式让我们生活变得更轻松。第一,它减少我们要输入的内容。第二点更重要,它使我们的脚本更加好维护。
当你写越来越多的脚本(或者做其他类型的编程),你将学到程序不曾结束过。它们被创建者和其他人修改和提高。毕竟,这是开源开发者的一切。让我们说你想改变短句”My System Information””Linuxbox System Information”。在这脚本的前一个版本,你将会去修改这两个地方。在新版本中的标题变量,你仅需要修改一个地方。自从我们脚本如此的小,这可能看起来像一个琐碎的事,但是当脚本变得越来越大和复杂时,它将会变得非常重要。注视一下在Script Library中的这些脚本来感受一下大脚本的滋味。
环境变量
当你开始你的shell会话,一些变量已经为你的使用准备好了。在用户的每一次登录时它们在脚本中被定义。要看所有在你环境中变量,使用printenv命令。你环境中的一个变量包含系统的主机名。我们将会把这个变量添加到我们的脚本中:
#!/bin/bash
 
# make_page - A script to produce an HTML file
 
title="System Information for"
 
cat <<- _EOF_
    <HTML>
    <HEAD>
        <TITLE>
        $title $HOSTNAME
        </TITLE>
    </HEAD>
 
    <BODY>
    <H1>$title $HOSTNAME</H1>
    </BODY>
    </HTML>
_EOF_
       
现在,我们的脚本将一直包含我们运行的这个机器的名字。注意,协定的,环境变量都是大写。