OnWorks Linux 和 Windows 在线工作站

商标

工作站免费在线托管

<上一页 | 内容 | 下一页>

变量和常量

但是,我们的脚本存在问题。 注意字符串“系统信息报告”是如何重复的? 对于我们的小脚本,这不是问题,但让我们想象一下我们的脚本真的很长,而且我们有这个字符串的多个实例。 如果我们想将标题更改为其他内容,则必须在多个地方进行更改,这可能需要大量工作。 如果我们可以安排脚本使字符串只出现一次而不出现多次会怎样? 这将使脚本的未来维护更加容易。 我们可以这样做:



#!/斌/庆典


# 程序输出系统信息页面


title="系统信息报告"


回声"

$ 标题

$ 标题

#!/斌/庆典


# 程序输出系统信息页面


title="系统信息报告"


回声"

$ 标题

$ 标题


通过创建一个 变量 命名 标题 并为其分配值“系统信息报告”,我们可以利用参数扩展并将字符串放置在多个位置。

那么,我们如何创建一个变量呢? 很简单,我们只是使用它。 当 shell 遇到一个变量时,它会自动创建它。 这与许多编程语言不同,在这些语言中变量必须显式 声明 或在使用前定义。 外壳对此非常松懈,这可能会导致一些问题。 例如,考虑在命令行上播放的这个场景:


[我@linuxbox ~]$ 富=“是” [我@linuxbox ~]$ 回声 $foo

[我@linuxbox ~]$ 回声$傻瓜


[我@linuxbox ~]$

[我@linuxbox ~]$ 富=“是” [我@linuxbox ~]$ 回声 $foo

[我@linuxbox ~]$ 回声$傻瓜


[我@linuxbox ~]$


我们首先将值“yes”赋给变量 FOO, 然后用 回音. 接下来我们显示拼错为“fool”的变量名的值,并得到一个空白结果。 这是因为 shell 愉快地创建了变量 傻瓜 当它遇到它时,并给它默认值没有或空。 由此我们了解到,我们必须密切注意我们的拼写! 理解这个例子中到底发生了什么也很重要。 从我们之前对 shell 如何执行扩展的观察中,我们知道该命令:



[我@linuxbox ~]$ echo $foo

[我@linuxbox ~]$ echo $foo


进行参数扩展并导致:



[me@linuxbox ~]$ echo 是

[me@linuxbox ~]$ echo 是


而命令:



[我@linuxbox ~]$ echo $傻瓜

[我@linuxbox ~]$ echo $傻瓜


扩展为:



[me@linuxbox ~]$回声

[me@linuxbox ~]$回声


空变量扩展为空! 这会对需要参数的命令造成严重破坏。 下面是一个例子:



[我@linuxbox ~]$ foo=foo.txt [我@linuxbox ~]$ foo1=foo1.txt [我@linuxbox ~]$ cp $foo $傻瓜

cp:'foo.txt' 后缺少目标文件操作数

[我@linuxbox ~]$ foo=foo.txt [我@linuxbox ~]$ foo1=foo1.txt [我@linuxbox ~]$ cp $foo $傻瓜

cp:'foo.txt' 后缺少目标文件操作数


试试 `cp --help' 以获得更多信息。

试试 `cp --help' 以获得更多信息。


我们为两个变量赋值, FOO 富1. 然后我们执行一个 cp,但拼错了第二个参数的名称。 扩容后, cp command 只发送一个参数,尽管它需要两个。

关于变量名有一些规则:

1. 变量名可以由字母数字字符(字母和数字)和下划线字符组成。

2. 变量名的第一个字符必须是字母或下划线。

3. 不允许使用空格和标点符号。

“变量”一词意味着一个会发生变化的值,在许多应用程序中,变量都是这样使用的。 但是,我们应用程序中的变量, 标题, 用作 常数. 常量就像一个变量,因为它有一个名字并包含一个值。 不同之处在于常量的值不会改变。 在执行几何计算的应用程序中,我们可以定义 PI 作为一个常数,并赋予它的值 3.1415, 而不是在整个程序中直接使用数字。 shell 不区分变量和常量。 它们主要是为了程序员的方便。 一个常见的约定是使用大写字母来指定常量,使用小写字母来表示真实变量。 我们将修改我们的脚本以符合此约定:



#!/斌/庆典

# 程序输出系统信息页面 题目="系统信息报告 对于 $HOSTNAME“回声”

$题目

$题目

#!/斌/庆典

# 程序输出系统信息页面 题目="系统信息报告 对于 $HOSTNAME“回声”

$题目

$题目


我们还借此机会通过添加 shell 变量的值来使我们的标题更加生动

主机名。 这是机器的网络名称。


图片

备注:外壳实际上确实提供了一种方法来强制执行常量的不变性,通过使用 宣布 内置命令 -r (只读)选项。 如果我们分配 题目 这条路:


声明 -r TITLE="页面标题"


外壳将阻止任何后续分配给 题目. 此功能很少使用,但它存在于非常正式的脚本中。


图片


 

OnWorks 的顶级操作系统云计算: