Unix / Linux - 使用 Shell 变量

  • 简述

    本章,我们将学习如何在 Unix 中使用 Shell 变量。变量是我们为其赋值的字符串。分配的值可以是数字、文本、文件名、设备或任何其他类型的数据。
    变量只不过是指向实际数据的指针。shell 使您能够创建、分配和删除变量。
  • 变量名

    变量的名称只能包含字母(a 到 z 或 A 到 Z)、数字(0 到 9)或下划线字符 (_)。
    按照惯例,Unix shell 变量的名称为大写。
    以下示例是有效的变量名称 -
    
    _ALI
    TOKEN_A
    VAR_1
    VAR_2
    
    以下是无效变量名称的示例 -
    
    2_VAR
    -VARIABLE
    VAR1-VAR2
    VAR_A!
    
    不能使用其他字符的原因,例如 !, *, 或者 - 就是这些字符对于shell有特殊的意义。
  • 定义变量

    变量定义如下 -
    
    variable_name=variable_value
    
    例如 -
    
    NAME="Zara Ali"
    
    上面的示例定义了变量 NAME 并为其分配了值“Zara Ali”。这种类型的变量称为scalar variables. 标量变量一次只能保存一个值。
    Shell 使您能够在变量中存储您想要的任何值。例如 -
    
    VAR1="Zara Ali"
    VAR2=100
    
  • 访问值

    要访问存储在变量中的值,请在其名称前加上美元符号 ($) −
    例如,以下脚本将访问已定义变量 NAME 的值并将其打印在 STDOUT 上 -
    
    #!/bin/sh
    NAME="Zara Ali"
    echo $NAME
    
    上面的脚本将产生以下值 -
    
    Zara Ali
    
  • 只读变量

    Shell 提供了一种使用只读命令将变量标记为只读的方法。将变量标记为只读后,其值将无法更改。
    例如,以下脚本在尝试更改 NAME 的值时会生成错误 -
    
    #!/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 命令来unset 标记的变量 readonly.
  • 变量类型

    当 shell 运行时,存在三种主要类型的变量 -
    • Local Variables− 局部变量是存在于当前 shell 实例中的变量。它不适用于由 shell 启动的程序。它们是在命令提示符下设置的。
    • Environment Variables− 环境变量可用于 shell 的任何子进程。有些程序需要环境变量才能正常运行。通常,shell 脚本仅定义它运行的程序所需的那些环境变量。
    • Shell Variables− shell 变量是由 shell 设置的特殊变量,是 shell 正常运行所必需的。其中一些变量是环境变量,而另一些是局部变量。