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

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

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁

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


第八章 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技术核心学习团队。一起探索科技的未来,共同成长。


目录
相关文章
|
人工智能 自然语言处理 安全
学不会编程也能写测试?AI让测试更平权
在传统的软件开发体系中,测试常被划分为“技术型测试”(如自动化、性能、安全)和“业务型测试”(如功能验证、用户体验)。前者掌握技术话语权,后者则更多依赖经验和流程规范。然而,随着大语言模型(LLM)等AI技术的迅猛发展,这一固有格局正被悄然打破:
438 10
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
497 86
|
测试技术 数据库 Python
解释测试中setup和teardown函数的应用。
总结起来,`setup`和 `teardown`函数就像扔宴会的主人,他们保障了宴会的流畅进行。他们是准备环境和清理现场的重要工作人员,他们的工作直接影响着我们的测试效率和质量。我们可以把 `setup`和 `teardown`想象成隐藏在幕后,默默为我们服务的工作者,他们做着我们需要但是往往忽视的工作。所以,下次当你写测试的时候,别忘了给你的 `setup`和 `teardown`留出足够的位置,因为他们的作用可能是你成功的保证。
304 14
|
人工智能 Ubuntu Linux
os-copilot使用之全面配置与使用测试
作为一名个人开发者,我主要从事云服务器架设工作。近期,我成功使用了OS Copilot的 `-t -f |` 功能,解决了执行语句、连续提问及快速理解文件的问题。我发现这些功能非常实用,特别是在使用Workbench时能快速调用AI助手。此外,建议将AI功能与xShell工具联动,进一步提升效率。文中详细记录了购买服务器、远程连接、安装配置OS Copilot以及具体命令测试的过程,展示了如何通过快捷键和命令行操作实现高效开发。
586 67
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
1104 11
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
弹性计算 运维 监控
OS Copilot-操作系统智能助手测试报告-新人体验
测试体验OS copilo安装、启动,体验copilot的提供的`-t`、`-f`、`|`通道的指令在在精准分析、批量任务处理、文件分析的能力。并记录下来。
531 18
|
人工智能 自然语言处理 前端开发
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
CodeArena 是一个在线平台,用于测试和比较不同大型语言模型(LLM)的编程能力。通过实时显示多个 LLM 的代码生成过程和结果,帮助开发者选择适合的 LLM,并推动 LLM 技术的发展。
2488 7
CodeArena:在线 LLM 编程竞技场!用于测试不同开源 LLM 的编程能力,实时更新排行榜
|
弹性计算 运维 开发者
os-copilot-操作系统智能助手测试和总结
OS-copilot的深度测评,使用co提供的 -t自动开启agent通道,-f批量处理task任务,通道 | 参数的文件理解和解析。
|
弹性计算 运维 Java
OS-Copilot参数功能全面测试报告
作为一名运维工程师,我主要负责云资源的运维和管理。通过使用OS Copilot的-t/-f/管道功能,我顺利解决了环境快速搭建的问题,例如Tomcat的快速部署。具体步骤包括购买ECS服务器、配置安全组、远程登录并安装OS Copilot。使用-f参数成功安装并启动Tomcat,自动配置JDK,并通过|管道功能验证了生成内容的正确性。整个过程非常流畅,极大提升了工作效率。
261 12