Linux Shell 脚本:使用 Shell 变量 0 个改进

本章,我们将学习在类 Unix 系统中如何使用变量。一个变量是一个字符串定义,它可以被你赋值,赋值可以是一个数值,一段文本,文件名,设备或任何其它类型的数据。

一个变量不会比一个类似指针指向实际的内容具有更多的功能。外壳程序允许你创建,赋值,或删除变量。

变量名

一个字符串代表变量名,它的规则是只能包含大小写字母(a 到 z 或 A 到 Z),数字(0 到 9)或者下划线( _ )。

约定俗成, Unix 外壳程序自身的变量名将为全大写形式。

下面是有效的变量名定义 −

_ALI
TOKEN_A
VAR_1
VAR_2

下面是无效的变量名定义 −

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

原因是变量名不能包含诸如 !* 或  - 等对外壳程序有特殊含义的字符。

定义变量

用以下形式定义变量:

variable_name=variable_value

举例:

NAME="Zara Ali"

如上形式命令定义一个名为 NAME 的变量,并赋值为 "Zara Ali"。这种类型变量被称为 可变化标量(scalar variables)。其一次只能保存一个值。

外壳程序允许变量保存任意类型数据,举例:

VAR1="Zara Ali"
VAR2=100

访问变量值

访问保存在变量中的具体数据,在变量名前加 $ 符前缀。

举例,下面的脚本将获取 NAME 变量中保存的数据,并将其显示输出到标准输出(STDOUT)。

#!/bin/sh

NAME="Zara Ali"
echo $NAME

上述脚本将会输出如下内容:

Zara Ali

只读变量

外壳提供一种只读命令方法(readonly)标识变量为只读变量。当变量指定为只读,其值不可再更改。

举例,下面的脚本试图给指定为只读的变量重新赋值将产生一个错误提示。

#!/bin/sh

NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

如上脚本运行时将产生如下输出:

/bin/sh: NAME: This variable is read only.

取消设置变量

取消设置或删除变量将使外壳程序直接移除对变量的跟踪保持。一旦取消设置一个变量,将不能再访问存储在变量中的值。

使用 unset 命令语法取消设置一个已定义的变量。

unset variable_name

以上命令取消设置已定义的变量,下面是其如何工作的简单例子。

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

如上的例子,运行脚本不会输出任何内容。注意,你不能使用 unset 命令取消设置一个标识为 只读(readonly) 的变量。

变量作用范围类型

当一个外壳实例或脚本运行时,提供三种变量作用范围类型:

  • 局部变量(Local Variables) − 局部变量只在当前运行外壳实例中有效。它并不会在启动脚本的外壳程序实例中有效。它们通常在命令行提示符下设置。

  • 环境变量(Environment Variables) − 一个外壳环境变量,对外壳实例的所有子进程都有效。许多脚本程序需要环境变量设置使其正确运行。通常,一个外壳脚本仅定义使其正确运行所必需的环境变量。

  • 外壳变量(Shell Variables) − 一个外壳变量是在外壳脚本中定义的特有变量,保证脚本的正确执行。其中一些是环境变量,另一些是局部变量。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!