Menu Close

什么是外壳(Shell)变量?

Shell 脚本有几个必需的结构,用来告诉 Shell 环境该做什么以及何时做。毕竟,Shell 是一种真正的编程语言,具有变量、控制结构等功能。

无论脚本变得多么复杂,它仍然只是一个按顺序执行的命令列表。

一)什么是外壳(Shell)变量?

变量是以字符和数字的形式存储的数据,同样,Shell变量也是用于存储信息,并且只能由Shell进行存储。如果需要更进一步的理解什么是变量,建议阅读 C语言变量一节

1.1 变量名

定义Shell变量时,变量名不加美元符号($,PHP语言中变量需要),如:

 
variable="Hello"
echo $variable

1.2 有效和无效的变量名

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头;
  • 中间不能有空格,可以使用下划线(_);
  • 不能使用标点符号;
  • 不能使用bash里的关键字(可用help命令查看保留关键字)

以下示例是有效的变量名 −

_ALI
TOKEN_A
VAR_1
VAR_2

以下示例是无效的变量名 −

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

你不能使用其他字符(如 !*-)作为变量名的原因是这些字符在 Shell 中具有特殊含义。

1.3 变量名应用实例

下面是个小脚本:

#!/bin/sh
echo "what is your name?"
read name
echo "How do you do, $name?"
read remark
echo "I am $remark too!"

你可以看到,系统自动选择Rowen作为name,和 fine 作为 remark.

这也可以看成简单的人机对话程序。

二)取消变量设置

取消或删除变量会指示 Shell 将该变量从它跟踪的变量列表中移除。一旦取消设置变量,就无法再访问该变量中存储的值。

以下是使用 unset 命令取消已定义变量的语法 −

unset VARIABLE_NAME

其中,VARIABLE_NAME 是你要取消设置的变量的名称。

上面的命令会取消已定义变量的值。下面是一个简单的示例,演示了该命令的工作原理 −

#!/bin/bash
# 定义变量
NAME="John Doe"
echo "Before unsetting: $NAME"

# 取消变量设置
unset NAME
echo "After unsetting: $NAME"

运行结果:

Before unsetting: John Doe
After unsetting:

在这个示例中,首先定义了一个名为 NAME 的变量并赋值为 "John Doe"。执行 unset NAME 后,该变量的值被移除,因此在之后的 echo 命令中不会显示任何内容。

二)变量类型

当 Shell 正在运行时,主要存在三种类型的变量 −

  1. 局部变量(Local Variables) − 局部变量是当前 Shell 实例中存在的变量。它们对由 Shell 启动的程序不可用。局部变量是在命令提示符下设置的。
  2. 环境变量(Environment Variables) − 环境变量对 Shell 的任何子进程都是可用的。有些程序需要环境变量才能正常运行。通常,Shell 脚本只定义那些它所运行的程序所需的环境变量。
  3. Shell 变量(Shell Variables) − Shell 变量是由 Shell 设置并且为其正常运行所需的特殊变量。这些变量中有些是环境变量,而另一些是局部变量。
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in 外壳脚本

Related Posts