理论教育 Shell变量-操作系统实践

Shell变量-操作系统实践

更新时间:2025-01-02 理论教育 版权反馈
【摘要】:Shell 中的变量可以保存路径名、 文件名或者一个数字等, Shell 中的变量是弱类型,不需要声明类型。在Shell 程序内这类变量的值是不能修改的。

Shell 中的变量可以保存路径名、 文件名或者一个数字等, Shell 中的变量是弱类型,不需要声明类型。 变量名由字母、 数字和下划线组成, 开头只能是字母或下划线。 变量按照使用用途分为环境变量、 预定义变量和用户变量三类。

1. 环境变量

环境变量类似于高级程序语言中的全局变量, 可以在创建它们的Shell 及其派生出来的任意子程序中使用。 有些环境变量是用户创建的, 但大部分环境变量是专用的, 如PATH、 HOME 等, 是系统环境的一部分, 不必去定义它们, 可以在Shell 程序中使用它们。

(1) 设置环境变量。

通常设置环境变量大写, 具体格式如下:

(2) 显示环境变量。

使用env 可以查看系统中所有的环境变量, 查看某一个环境变量使用格式如下:

例如 echo $HOME  / /显示当前用户的家目录

(3) 清除环境变量。

环境变量可以在命令行中设置, 但用户注销时这些值将丢失。 如果想要永久保存环境变量, 需要将其写入相关配置文件(~/.profile)中。 命令行中清除环境变量可以使用如下格式:

常见的环境变量有如下几种。

①HOME: 用于保存当前用户主目录。

②PATH: 用于保存用冒号分隔的目录路径名, Shell 将按PATH 变量中给出的顺序搜索, 找到第一个与命令名称一致的可执行文件将被执行。

③SHELL: 指当前用户用的那种SHELL。

④LOGNAME: 指当前用户的登录名。

⑤HISTSIZE: 指保存历史命令记录的条数。

⑥PS1: 保存Shell 用来提示用户输入命令的提示字符串, 默认超级用户是#, 普通用户是$。

2. Shell 预定义变量

Shell 预定义变量由系统提供, 与环境变量不同, 用户不能修改它们。

预定义变量是Linux 所提供的一种特殊类型的变量, 这类变量在程序中用来做出判断。在Shell 程序内这类变量的值是不能修改的。

部分预定义变量的含义如下:

$# ——传送给Shell 程序的位置参数的数量;

$? ——最后命令的完成码或者在Shell 程序内部执行的Shell 程序(返回值);(www.daowen.com)

$0——Shell 程序的名称;

$∗——调用Shell 程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数;

$@——“参数1”“参数2”…形式保存的参数;

$n——第n 个参数;

$$——本程序的PID;

$! ——上一个命令的PID。

【例4-2】 当前有一个名为exam.sh 的脚本, 其中的内容如下。

执行该脚本时使用的命令和输出结果如图4.3 所示。

图4.3 例4-2 的运行结果

◎说明

由于进程具有动态性, 所以每次进程运行返回的pid 都是不一样的, 进一步体会进程的动态性。

3. 用户变量

用户变量又称为本地变量、 局部变量, 只在创建它们的Shell 中使用, 可以在Shell 程序内任意使用和修改它们。

(1) 设置本地变量。

给变量赋值时, 等号两边不能有空格, 变量区分大小写字母, 其格式如下:

注意: 取值包含空格, 必须用引号(单引号或双引号)括起来。 例如定义一个值为hello world 的变量var, 可以使用格式如下:

(2) 引用变量。

Shell 中使用$来引用变量, 若输出var 变量的内容, 可以使用如下方式:

变量名为1 个字符时建议使用方式一, 多于一个字符时建议使用方式二, 防止发生歧义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈