Unix / Linux - 使用Shell变量

在本章中,我们将学习如何在Unix中使用Shell变量.变量是我们为其赋值的字符串.分配的值可以是数字,文本,文件名,设备或任何其他类型的数据.

变量只不过是指向实际数据的指针. shell允许您创建,分配和删除变量.

变量名称

变量的名称只能包含字母(a到z)或者A到Z),数字(0到9)或下划线字符(_).

按照惯例,Unix shell变量的名称将为UPPERCASE.

以下示例是有效的变量名称 :

_ALI
TOKEN_A
VAR_1
VAR_2

以下是无效变量名称的示例 :

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

您无法使用其他字符的原因,例如 *  - 这些字符对shell有特殊含义.

定义变量

变量定义如下 :

variable_name=variable_value

例如 :

NAME="Zara Ali"

上面的例子定义变量NAME并赋值"扎拉阿里"对它.这种变量称为标量变量.标量变量一次只能包含一个值.

Shell允许您在变量中存储所需的任何值.例如 :

VAR1="Zara Ali"
VAR2=100

访问值

要访问存储在变量中的值,请在其名称前加上美元符号( $ ) :

例如,以下脚本将访问已定义变量NAME的值并在STDOUT&minus上打印;

#!/bin/sh

NAME="Zara Ali"
echo $NAME

以上脚本将产生以下值 :

Zara Ali

只读变量

Shell提供了一种使用只读命令将变量标记为只读的方法.将变量标记为只读后,其值无法更改.

例如,以下脚本在尝试更改NAME&minus的值时会生成错误;

#!/bin/sh

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

上述脚本将生成以下结果 :

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

取消设置变量

取消设置或删除变量会指示shell从变量列表中删除变量轨道.一旦取消设置变量,就无法访问变量中的存储值.

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

unset variable_name

上述命令取消设定已定义变量的值.这是一个简单的例子,演示命令如何工作和减去;

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

以上示例不打印任何内容.您不能将unset命令用于取消设置标记为 readonly 的变量.

变量类型

当shell运行时,存在三种主要类型的变量 :

  • 局部变量 : 局部变量是存在于shell的当前实例中的变量.它不适用于由shell启动的程序.它们是在命令提示符下设置的.

  • 环境变量 : 环境变量可用于shell的任何子进程.有些程序需要环境变量才能正常运行.通常,shell脚本只定义它运行的程序所需的那些环境变量.

  • Shell变量 :  shell变量是一个由shell设置的特殊变量,它是shell所必需的,以便正常运行.其中一些变量是环境变量,而其他变量是局部变量.