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

Shell变量-操作系统实践

时间:2023-11-25 理论教育 版权反馈
【摘要】:Shell 中的变量可以保存路径名、 文件名或者一个数字等, 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 个字符时建议使用方式一, 多于一个字符时建议使用方式二, 防止发生歧义。

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

我要反馈