【Linux实践】实验八:Shell程序的创建及变量
- 实验目的
- 实验内容
- 实验步骤及结果
- 1. 环境变量
- 2. 变量的定义和输出
- 3. test 命令
- 4. Shell 程序
实验目的
1、掌握Shell程序的创建过程及Shell程序的执行方法。
2、掌握Shell变量的定义方法,及用户定义变量、参数位置等。
3、掌握变量表达式,包括字符串比较、数字比较、逻辑测试、文件测试。
实验内容
1、查看当前系统下用户Shell定义的环境变量的值。
2、定义变量AK的值为200,并将其显示在屏幕上。
3、定义变量AM的值为100,并使用test命令比较其值是否大于150。
4、创建一个简单的Shell程序,其功能为显示计算机主机名以及显示系统日期和时间,并执行该程序。
实验步骤及结果
1. 环境变量
- 环境变量一般指的是在操作系统中用于指定操作系统运行环境的一些参数。
- Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
- 处理环境变量的命令有
set
和env
,可以看到这两个命令是有区别的。-
set
用于设置或显示当前 Shell 的所有变量,包括环境变量和 Shell 变量。 -
使用
set VAR=value
来创建或修改 Shell 变量,使用unset
删除变量。
-
env
用于显示当前用户的环境变量,但不会显示 Shell 变量;或在指定的环境下运行其他命令。 -
使用
env VAR=value command
来设置环境变量,并在该环境下运行指定的命令。
-
- 但是使用
set
定义的变量不是永久生效的,仅在当前会话中有效。如果需要配置持久化的变量,需要修改用户的配置文件。
2. 变量的定义和输出
- 在 Shell 中定义变量,一般定义的是 Shell 变量。
- 如果要把 Shell 变量转换为环境变量,需要使用
export
命令,以便它们可以被子进程访问。 - 基本语法:
变量名=变量值
(不带空格) - 定义变量AK的值为200
可以看出目前定义的是 Shell 变量,现在使用export
将它转为环境变量。
- 输出变量:
echo $变量名
3. test 命令
test
命令是 Shell 内置命令,用来检测某个条件是否成立。- 返回一个退出状态码
- 0:表示条件为真(true)、无异常。
- 1:表示条件为假(false)、出现异常。
- 其他值:通常用于表示错误(例如,语法错误或使用了无效的选项)。
- 基本语法:
test 选项|表达式
常见用法 | 说明 |
---|---|
test -e filename | 检查文件是否存在 |
test -f filename | 检查是否是一个文件 |
test -d directoryname | 检查是否是一个目录 |
test 数字1 -eq 数字2 | 检查数字是否相等 |
test 数字1 -gt 数字2 | 检查数字1是否大于数字2 |
test 数字1 -lt 数字2 | 检查数字1是否小于数字2 |
test –n 字符串 | 检查字符串的长度非零 |
test –z 字符串 | 检查字符串的长度是否为零 |
-
定义变量AM的值为100
-
使用test命令比较其值是否大于150
-
echo $?
是一个用于输出上一个命令的退出状态码的命令,返回值是1,表示条件不成立。
-
再试试其他值
4. Shell 程序
-
Shell 概念:是一种具备特殊功能的 程序,也被称为命令解析器或命令行解释器,它是介于使用者和操作系统核心程序之间的 接口。
- 常见的 Shell 有
sh
、Bash
、csh
、ksh
、zsh
- 常见的 Shell 有
-
功能:Shell 的主要功能是作为用户与操作系统之间的交互界面。它接收用户输入的命令,解释这些命令并将其传递给操作系统核心执行,然后返回结果给用户。
-
Shell 程序,是将各类命令预先放入到一个文件中,方便一次性执行,主要是方便管理员进行设置或者管理用的。
-
我们这里用 Bash 来执行 Shell 程序
- Bash(Bourne Again SHell)是一种命令行解释器和脚本语言,是 Unix 和 Linux 系统中最常用的 Shell 之一。
- 要想用 Bash 来执行 Shell 程序,需要在脚本文件的开头,写上
#!/bin/bash
。否则系统可能(只是可能)无法确定该使用哪个解释器来执行该脚本。
-
创建一个简单的Shell程序,其功能为显示计算机主机名以及显示系统日期和时间,并执行该程序
-
创建一个文件
-
编写程序代码,然后保存退出。(如果不会用vi编辑器可以用图形化界面写,效果一样的)
-
使用
bash
执行程序
-