【Linux实践】实验八:Shell程序的创建及变量

news/2024/10/5 17:23:30/

【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是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
  • 处理环境变量的命令有 setenv,可以看到这两个命令是有区别的。
    • 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 有 shBashcshkshzsh
  • 功能:Shell 的主要功能是作为用户与操作系统之间的交互界面。它接收用户输入的命令,解释这些命令并将其传递给操作系统核心执行,然后返回结果给用户。

  • Shell 程序,是将各类命令预先放入到一个文件中,方便一次性执行,主要是方便管理员进行设置或者管理用的。

  • 我们这里用 Bash 来执行 Shell 程序

    • Bash(Bourne Again SHell)是一种命令行解释器和脚本语言,是 Unix 和 Linux 系统中最常用的 Shell 之一。
    • 要想用 Bash 来执行 Shell 程序,需要在脚本文件的开头,写上#!/bin/bash。否则系统可能(只是可能)无法确定该使用哪个解释器来执行该脚本。
  • 创建一个简单的Shell程序,其功能为显示计算机主机名以及显示系统日期和时间,并执行该程序

    • 创建一个文件
      在这里插入图片描述

    • 编写程序代码,然后保存退出。(如果不会用vi编辑器可以用图形化界面写,效果一样的)
      在这里插入图片描述

    • 使用 bash 执行程序
      在这里插入图片描述


http://www.ppmy.cn/news/1533929.html

相关文章

数据库 - python操作MySQL

目录 前言 一、PyMySQL的特点 二、安装 三、基本用法 (一)连接MySQL数据库 (二)数据查询 (三)插入数据 (四)更新和删除数据 (五)事务管理 四、游标…

单片机裸机之实现任务调度+软timer(含源码)

一、实现目的 在某些应用场景下,我们不需要使用操作系统,但是也希望能使用操作系统的api一样去调用自己的逻辑任务。如创建一个10ms的任务或定时器,只需要调用类似task_create或timer_create的接口就可以了。这样的好处一是我们只关心业务逻辑…

Rust(1)基础语法

Rust(1)基础语法 Author: Once Day Date: 2024年9月28日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客 参考文…

①EtherCAT转ModbusTCP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 EtherCAT 转 ModbusTCP GW系列型号 MS-GW15 简介 MS-GW15 是 EtherCAT 和 Modbus TCP 协议转换网关,为用户提供一种 …

基于Java+SpringBoot3+vue3商城管理系统设计与实现(视频讲解)

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

【完-网络安全】Windows注册表

文章目录 注册表启动项及常见作用五个根节点常见入侵方式 注册表 注册表在windows系统的配置和控制方面扮演了一个非常关键的角色,它既是系统全局设置的存储仓库,也是每个用户的设置信息的存储仓库。 启动项及常见作用 快捷键 WinR打开运行窗口&#x…

维修保养记录接口-维修保养记录API-汽车接口

维修保养记录接口的使用主要涉及到API对接和在线查询两种方式。以下是详细的使用步骤和注意事项: 一、API对接 注册与申请: 首先,你需要在提供维修保养记录接口的平台(如挖数据平台、第三方数据服务商等)进行注册&…

TDSQL-C电商可视化,重塑电商决策新纪元

前言: 在数字化浪潮席卷全球的今天,电子商务行业以其独特的魅力和无限潜力,成为了推动全球经济增长的重要引擎。然而,随着业务规模的急剧扩张,海量数据的涌现给电商企业带来了前所未有的挑战与机遇。如何高效地处理、…