《Linux操作系统编程》第八章 Shell程序设计: shell 语言结构,包括测试、分支、循环、跳转、函数、语句组

news2024/11/17 7:30:59

在这里插入图片描述

在这里插入图片描述

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

在这里插入图片描述

文章目录

  • 第八章 Shell程序设计
    • 学习目的
    • 学习要求
    • 学习方法
    • 概念和原理
      • 8.1 Shell编程语言
      • 8.2 shell程序和语句
        • 8.2.2 shell程序和语句
        • 8.2.3 shell的功能性语句
        • 8.2.5 shell的结构性语句(上)
        • 8.2.6 shell的结构性语句(下)
      • 8.3 shell函数
        • 8.3.1 shell函数
    • 重点
    • 难点
  • 原创声明

第八章 Shell程序设计

学习目的

应用已有功能解决常见管理维护需求的能力,尤其是利用shell编程解决问题的能力。

学习要求

了解:shell程序的建立和运行,shell程序调试。

理解:shell程序语言结构

掌握:shell 语言结构,包括测试、分支、循环、跳转、函数、语句组等。

学习方法

​ 本章主要关于shell程序设计,需要学生掌握shell 语言结构,包括测试、分支、循环、跳转、函数、语句组等并且亲自动手实践,培养shell编程能力。

概念和原理

8.1 Shell编程语言

(1) shell脚本

▪ 用shell语言编写的程序称为 shell脚本或 shell程序。

▪ shell脚本是一个普通的文本文件,其中包含将由shell 执行的一系列命令,这些命令与用户在命令行上输入的命令完全相同。

▪ 当运行一个shell脚本时,脚本文件中的每条命令都被传送给shell解释执行,一次执行一条命令。当所有的命令执行完毕或出现错误时,脚本终止运行。

(2) shell编程的基本过程

  1. 建立 shell 文件

包含任意多行操作系统命令或shell命令的文本文件;

  1. 赋予shell文件执行权限

用chmod命令修改权限;

  1. 执行shell文件

直接在命令行上调用该shell程序.

8.2 shell程序和语句

8.2.2 shell程序和语句

shell语句包括三大类:

▪ 说明性语句:

​ 以#号开始到行尾的部分,不被解释执行。

▪ 功能性语句:

​ 任意的操作系统命令、shell内部命令、自编程序、其它shell程序名等。

▪ 结构性语句:

​ 条件测试语句、多路分支语句、循环语句、循环控制语句等。

8.2.3 shell的功能性语句

(1) read命令

read从标准输入读入一行, 并赋值给后面的变量, 其语法为

read var

把读入的数据全部赋给var

read var1 var2 var3

把读入行中的第一个参数赋给var1, 第二个参数赋给var2, ……,把其余所有的参数赋给最后一个变量.

(2) expr命令

算术运算命令expr主要用于进行简单的整数运算,包括加(+)、减(-)、乘(*)、整除(/)和求模(%)等操作。例如:

$ expr 12 + 5 * 3

27

$ expr 3 - 8 / 2

-1

$ expr 25 % 4

1

$ num=9

$ sum=expr $num \* 6

$ echo $sum

54

(3) tput命令

tput命令主要用于设置终端工作模式, 或读出终端控制字符。

tput命令与终端控制代码数据库terminfo相连, 根据shell环境变量TERM的值, 读出这种终端的指定功能控制代码。

8.2.5 shell的结构性语句(上)

(1) 测试语句

test语句可测试三种对象 : 字符串 整数 文件属性

(2) 条件语句

▪ 语法结构:

​ if 表达式

​ then 命令表

​ fi

如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。 if和fi是条件语句的语句括号, 必须成对使用。

▪ 语法结构为:

​ if 表达式

​ then 命令表1

​ else 命令表2

​ fi

如果表达式为真, 则执行命令表1中的命令, 退出if语句; 否则执行命令表2中的语句, 退出if语句。

(3) 多路分支语句

多路分支语句case用于多重条件测试, 语法结构清晰自然. 其语法结构为:

case 字符串变量 in

​ 模式1)

​ 命令表1

​ ;;

​ 模式2)

​ 命令表2

​ ;;

​ ……

​ 模式n)

​ 命令表n

​ ;;

esac

8.2.6 shell的结构性语句(下)

(1) 循环语句

▪ 当循环次数已知或确定时, 使用for循环语句来多次执行一条或一组命令. 循环体由语句括号do和done来限定。 格式为:

​ for 变量名 in 单词表

​ do

​ 命令表

​ done

▪ 语法结构为:

​ while 命令或表达式

​ do

​ 命令表

​ done

while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。

▪ 语法结构为:

until 命令或表达式

​ do

​ 命令表

​ done

until循环与while循环的功能相似, 所不同的是只有当测试的命令或表达式的值是假时, 才执行循环体中的命令表, 否则退出循环。这一点与while命令正好相反。

(2) 循环控制语句

▪ break语句从包含该语句的最近一层循环中跳出一层, break n 则跳出n层;

▪ continue语句则马上转到最近一层循环语句的下一轮循环上, continue n则转到最近n层循环语句的下一轮循环上.

8.3 shell函数

8.3.1 shell函数

▪ 在shell程序中, 常常把完成固定功能、且多次使用的一组命令(语句)封装在一个函数里,每当要使用该功能时只需调用该函数名即可。

▪ 函数在调用前必须先定义,即在顺序上函数说明必须放在调用程序的前面。

▪ 调用程序可传递参数给函数, 函数可用return语句把运行结果返回给调用程序。

▪ 函数只在当前shell中起作用, 不能输出到子shell中。

▪ shell函数的说明格式

function_name ( )

{

​ command1

​ ……

​ commandn

}

函数的调用格式:

value_name=function_name [arg1 arg2 … ]

或者:

function_name [arg1 arg2 … ]

echo $value_name

重点

shell语言结构。

难点

shell语言结构(测试语句、条件语句、多路分支语句、循环语句、循环控制语句)。

原创声明

=======

作者: [ libin9iOak ]


本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任。

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ DAY3

1.思维导图 2.有以下类定义&#xff0c;按要求实现剩余功能 #include <iostream> using namespace std;class Person { private:int age;int *p; public://无参构造Person():p(new int(89)){age 18;}//有参构造Person(int age,int num){this->age age;this->pne…

基于Java实验室开放管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Servlet实现留言墙

目录 1.创建工程 2.构建目录工程结构 3.设置编码格式尾utf-8 4.查看Maven配置 5.一些其他配置​编辑 6.导入依赖 7.导入HTML和JS、配置tomcat 8.测试网站是否可以正常访问 9.编写业务代码 开发环境&#xff1a;idea2022.2社区版 1.创建工程 2.构建目录工程结构 web.xml中的…

《程序员的AI书_从代码开始》第一章 机器学习的Hello World

文章目录 1.3 从代码开始1.3.2 一段简单的代码 1.3 从代码开始 1.3.2 一段简单的代码 python导入tensflow.keras报错解决方法 import tensorflow as tf from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import DensemodelSeque…

为什么网络攻击绝大多数发生在游戏行业

近年来&#xff0c;游戏行业欣欣向荣&#xff0c;游戏玩家也呈指数级增长&#xff0c;全球数以亿计的游戏玩家享受着网络游戏广泛的互动体验&#xff0c;然而&#xff0c;由于游戏的崛起和受欢迎程度也使其成为网络黑客寻求利用其漏洞的首选目标。 出于多种原因&#xff0c;游…

MybatisPlus的分页插件自动优化LeftJoin语句导致参数不匹配

所报的错误&#xff1a; java.sql.SQLException: Parameter index out of range (3 &#xff1e; number of parameters, which is 2). 首先会去检查自己传了哪些参数&#xff1f;是否都用上了&#xff1f;反复检查&#xff0c;发现并没有多余的参数&#xff1a; controller…

目前主流的软件开发模型:瀑布模型,增量模型(渐增模型,快速原型模型),螺旋模型,喷泉模型,敏捷模型。

目录 前言&#xff1a; 一、瀑布模型&#xff1a; 二、增量模型&#xff1a; 三、螺旋模型&#xff1a; 四、喷泉模型&#xff1a; 五、敏捷开发模型&#xff1a; 前言&#xff1a; 软件开发模型是用来指导和组织软件开发过程的模式或方法。随着软件行业的发展和不断变化…

Hue 后台编辑器 远程命令执行漏洞

描述 Hue 后台编辑器存在命令执行漏洞&#xff0c;攻击者通过编辑上传 xxx.sh 文件即可达到命令执行的目的。 FOFA title"Hue - 欢迎使用 Hue" "/hue/accounts/login?next/"复现过程 默认密码&#xff1a;admin:admin 上传并编辑文件为执行的命令

5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)

1、DataX简介 1.1 DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。源码地址&#xff1a;https://github.com/alibaba/Dat…

SpringBoot3.0整合RocketMQ时出现未能加载bean文件

SpringBoot3.0整合RocketMQ时出现未能加载bean文件 问题 APPLICATION FAILED TO START Description: Field rocketMQTemplate in com.spt.message.service.MqProducerService required a bean of type ‘org.apache.rocketmq.spring.core.RocketMQTemplate’ that could not …

Scala里的WordCount 案例

7.7.5 普通 WordCount 案例 package chapter07object TestWordCount__简单版 {def main(args: Array[String]): Unit {//单词计数&#xff1a;将集合中出现的相同单词计数&#xff0c;进行计数&#xff0c;取计数排名的前三的结果val stringList List("Hello Scala Hbas…

2023年前端面试汇总-React

1. 组件基础 1.1. React事件机制 <div onClick{this.handleClick.bind(this)}>点我</div> React并不是将click事件绑定到了div的真实DOM上&#xff0c;而是在document处监听了所有的事件&#xff0c;当事件发生并且冒泡到document处的时候&#xff0c;React将事…

C语言进阶--动态内存管理

目录 一.为什么使用动态内存分配&#xff1f; 二.动态内存函数 2.1.malloc和free malloc函数 free函数 2.2.calloc和realloc calloc函数 realloc函数 三.常见的动态内存错误 对NULL指针的解引用 对动态开辟空间的越界访问 对非动态开辟内存使用free释放 使用free释…

新型进网许可标志规格样式及申请使用流程说明

新型进网许可标志规格样式及申请使用流程说明 一、新型进网许可标志规格样式 (一)标志样式 新型进网许可标志分为彩色样式和黑白样式&#xff0c;如图1所示&#xff0c;生产企业可以自行选择使用。 (二)标志要素 新型进网许可标志由许可标识、设备型号、数字编码等要素组成…

13年测试老鸟,web性能测试-测试用例总结 (全覆盖),卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试用例主要…

弟子规 古译今 详解

博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 &#x1f369;惟余辈才疏学浅&#xff0c;临摹之作或有不妥之处&#xff0c;还请读者海涵指正。☕&#x1f36d; 《MYSQL从入门到精通》数据库是开发者必会基础之…

docker专题系列之十五:卸载docker

一、准备工作 1.杀死docker有关的容器&#xff1a; docker kill $(docker ps -a -q)2.删除所有docker容器&#xff1a; docker rm $(docker ps -a -q)3.删除所有docker镜像&#xff1a; docker rmi $(docker images -q)4.停止 docker 服务&#xff1a; systemctl stop dock…

销售管理和客户管理为什么要用CRM管理软件?

对于公司营销管理、企业管理和客户关系管理而言&#xff0c;CRM管理软件的使用是必不可少的。 通过对企业营销过程中所遭遇的客户资源管理问题进行分析&#xff0c;我们可以发现其困扰的核心问题都围绕着信息的获取和管理。 一些常见的问题包括信息缺失、信息混乱、信息管理困…

Win10临时文件夹在哪个位置打开?Win10临时文件夹打开教程

Win10系统中的临时文件夹是一个用于存储临时数据的目录&#xff0c;现在用户需要访问或清理这个临时文件夹&#xff0c;以便管理计算机&#xff0c;但是对于一些用户来说&#xff0c;找到并打开Win10临时文件夹的实际位置可能会有些困惑。本教程中小编将向用户们介绍Win10临时文…

网络数据包封装/解封装

数据的发送和接收其实就是封装及解封装的过程。 协议栈逐层向下传递数据&#xff0c;并添加报文头部和报文尾部的过程称为封装。反过来就是解封装。 封装过程 封装过程&#xff1a;上层原始数据→数据段(segment)→数据包(packet)→数据帧(frame)→比特流(bit) 应用层&#…