【Linux实践】实验九:Shell流程控制语句

news2024/9/27 10:39:06

【Linux实践】实验九:Shell流程控制语句

  • 实验目的
  • 实验内容
  • 实验步骤及结果
    • 1. 变量的定义和使用
    • 2. 条件
    • 3. 运算
    • 4. if 语句
    • 5. case 语句
    • 6. for 语句
    • 7. while 语句
    • 8. until 语句
    • 9. 遍历复制
    • 10. 计算平方

实验目的

1、掌握条件判断语句,如if语句、case语句。
2、掌握循环控制语句,如for语句、while语句、until语句。

实验内容

1、编写一个Shell脚本,利用for循环把当前目录下的所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
2、使用until语句创建一个Shell程序,其功能为计算1-10的平方。

实验步骤及结果

1. 变量的定义和使用

  • 定义变量:变量名=值
  • 使用变量:$变量名
  • 只读变量:readonly 变量名
  • 删除变量:unset 变量名

2. 条件

  • 条件可以通过直接调用 test 命令或使用方括号 [ ] 来编写,如果用[ ] 必须注意要有空格。
  • 下面两个条件语句的结果是一样的
    • if test $AM -gt 150
    • if [ $AM -gt 150 ]

3. 运算

  • $(( ... )) 是一种用于进行算术运算的语法,但仅支持整数运算。

    • 加法:sum=$((a + b))
    • 自增加1:count=$((count + 1))
    • 另外一种自增写法:((count++))
  • 如果需要浮点运算,可以使用 bc 或其他工具。

  • expr 也是一个用于计算表达式的命令行工具,可以进行整数运算、字符串操作等。

    • 自增加1:count=$(expr $count + 1)

    • 计算字符串长度:expr length "Hello"

4. if 语句

  • 基本语法

    if [ 条件 ]; then
        # 条件为真时执行的代码
    fi
    
  • 双分支

    if [ 条件 ]; then
        # 条件为真时执行的代码
    else
        # 条件为假时执行的代码
    fi
    
  • 多分支

    if [ 条件 ]; then
        # 条件为真时执行的代码
    elif [ 其他条件 ]; then
        # 其他条件为真时执行的代码
    else
        # 所有条件都不满足时执行的代码
    fi
    

5. case 语句

  • case 语句用于多重选择的一种控制结构,类似于其他编程语言中的 switch 语句。
case 变量名 in
    匹配1)
        # 命令1
        ;;
    匹配2)
        # 命令2
        ;;
    *)
        # 默认命令(default)
        ;;
esac

6. for 语句

  • for 语句用于重复执行一组命令,通常根据指定的列表或范围迭代。

  • 基于列表的循环:

    for 变量名 in 列表; do
        # 命令
    done
    
  • 基于范围的循环:

    for ((i=0; i<3; i++)); do
        # 命令
    done
    

7. while 语句

  • 和其他语言一样,在给定条件为真时重复执行。
    while [ 条件 ]; do
        # 命令
    done
    

8. until 语句

  • until 语句用于在条件为假时持续执行某些命令。它的基本结构与 while 循环类似,但逻辑相反。

    until [ 条件 ]; do
        # 当条件为假时执行的代码
    done
    

9. 遍历复制

  • 准备工作:在桌面创建目录1和目录2,在目录1中新建1.c,2.c,3.c
    在这里插入图片描述

  • 在目录1下新建一个shell脚本 autocp
    在这里插入图片描述

  • 编写程序,利用for循环把目录1下的所有 *.c 文件复制到目录2中,显示复制后该目录内按文件大小排序的目录文件清单。
    在这里插入图片描述

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

10. 计算平方

  • 准备工作:在桌面创建一个 autoCal 文件
    在这里插入图片描述

  • 使用until语句计算1-10的平方
    在这里插入图片描述

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

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

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

相关文章

tomcat的安装,管理与配置

目录 Tomcat 服务部署 1.关闭防火墙&#xff0c;将安装 Tomcat 所需软件包上传到虚拟机 2.安装JDK 3.设置JDK环境变量 4.安装启动Tomcat 5.启动tomcat 6.优化tomcat启动速度 Tomcat 服务管理 systemd 管理控制 supervisor 管理控制 Tomcat 虚拟主机配置 1.创建 sun…

EE trade:黄金 999 和黄金 9999 的区别

黄金&#xff0c; 作为一种珍贵的金属&#xff0c; 一直是人们投资和收藏的对象。 在购买黄金时&#xff0c; 您可能会遇到两种纯度的黄金 —— 黄金 999 和黄金 9999。 这两种黄金有什么区别? 消费者应该如何选择呢? 一、 黄金 999 和黄金 9999 的区别 含金量&#xff1a;…

OCR 行驶证识别 离线识别

目录 正页识别 副页识别 全部识别 OCR 行驶证识别 离线识别 正页识别 副页识别 全部识别

C语言实现归并排序(Merge Sort)

目录 一、递归实现归并排序 1. 归并排序的基本步骤 2.动图演示 3.基本思路 4.代码 二、非递归实现 1.部分代码 2.代码分析 修正后代码&#xff1a; 归并过程打印 性能分析 复杂度分析 归并排序是一种高效的排序算法&#xff0c;采用分治法&#xff08;Divide and Con…

中电金信:“源启”金融级数字底座

01方案简介 金融级数字底座是中电金信依托中国电子自主安全计算产业链&#xff0c;采用新一代技术架构&#xff0c;为金融及重点行业打造的数字化新型基础设施。 “源启”面向金融等重点行业场景&#xff0c;依照系统工程方法论&#xff0c;进行全栈技术产品的验证、适配和调…

word2vector训练数据集整理(代码实现)

import math import os import random import torch import dltools from matplotlib import pyplot as plt #读取数据集 def read_ptb():"""将PTB数据集加载到文本行的列表中"""with open(./ptb/ptb.train.txt) as f:raw_text f.read()return…

【深度学习基础模型】双向循环神经网络(Bidirectional Recurrent Neural Networks, BiRNN)详细理解并附实现代码。

【深度学习基础模型】双向循环神经网络&#xff08;Bidirectional Recurrent Neural Networks, BiRNN&#xff09; 【深度学习基础模型】双向循环神经网络&#xff08;Bidirectional Recurrent Neural Networks, BiRNN&#xff09;详细理解并附实现代码。 文章目录 【深度学习…

使用 Llama 3.1 和 Qdrant 构建多语言医疗保健聊天机器人的步骤

长话短说&#xff1a; 准备好深入研究&#xff1a; 矢量存储的复杂性以及如何利用 Qdrant 进行高效数据摄取。掌握 Qdrant 中的集合管理以获得最佳性能。释放上下文感知响应的相似性搜索的潜力。精心设计复杂的 LangChain 工作流程以增强聊天机器人的功能。将革命性的 Llama …

虚幻蓝图Ai随机点移动

主要函数: AI MoveTo 想要AI移动必须要有 导航网格体边界体积 (Nav Mesh Bounds Volume) , 放到地上放大 , 然后按P键 , 可以查看范围 然后创建一个character类 这样连上 AI就会随机运动了 为了AI移动更自然 , 取消使用控制器旋转Yaw 取消角色移动组件 的 使用控制器所需的…

风扇模块(直流5V STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main.c文件 fan.h文件 fan.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 直流风扇(Fan)&#xff0c;具有高转速、大风量、低噪音、低能耗和低震动的特点&#xff0c;有DC5V和12V两种型号可供…

【HarmonyOS】Web组件同步与异步数据获取

Web组件交互同步与异步获取数据的方式示例 【html测试文件】src/main/resources/rawfile/Page04.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><script>let isEnvSupported CSS in window &&…

云上攻防 | AWS中的常见 Cognito 配置错误

引言 AWS Cognito 是由亚马逊网络服务&#xff08;AWS&#xff09;提供的全托管服务&#xff0c;旨在简化 Web 和移动应用程序的用户认证和授权过程。它提供了一整套功能来处理用户注册、登录和用户管理&#xff0c;免去了开发人员从头构建这些功能的需求。 尽管本文讨论的攻…

8.11 矢量图层线要素单一符号使用二(箭头)

8.11 矢量图层线要素单一符号使用二(箭头)_qgis箭头-CSDN博客 目录 前言 箭头&#xff08;Arrow&#xff09; QGis设置线符号为箭头(Arrow) 二次开发代码实现 总结 前言 本章介绍矢量图层线要素单一符号中箭头&#xff08;Arrow&#xff09;的使用说明&#xff1a;文章中…

等保2.0数据库测评之达梦数据库测评

一、达梦数据库介绍 达梦数据库管理系统属于新一代大型通用关系型数据库&#xff0c;全面支持 ANSI SQL 标准和主流编程语言接口/开发框架。行列融合存储技术&#xff0c;在兼顾 OLAP 和 OLTP 的同时&#xff0c;满足 HTAP 混合应用场景。 本次安装环境为Windows10专业版操作…

华夏ERP3.1权限绕过代码审计

POC: /jshERP-boot/user/getAllList;.ico 调试分析poc: 这是poc很明显就是绕过权限&#xff0c;我们分析filter里面的代码。 Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {Htt…

基于Spring Boot的校园管理系统

目录 前言 功能设计 系统实现 获取源码 博主主页&#xff1a;百成Java 往期系列&#xff1a;Spring Boot、SSM、JavaWeb、python、小程序 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自…

使用API有效率地管理Dynadot域名,设置域名服务器(NS)

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

SQL Server的文本和图像函数

新书速览|SQL Server 2022从入门到精通&#xff1a;视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…

【Python】Ajenti:轻量级、强大的服务器管理面板

在现代服务器管理中&#xff0c;管理员们经常需要通过命令行执行各种任务&#xff0c;这不仅耗时&#xff0c;而且对不熟悉 Linux 系统的用户来说并不友好。为了更高效地管理服务器、网站和应用&#xff0c;借助一个功能强大的管理面板是非常有必要的。Ajenti 就是这样一款轻量…

MySql数据库---判断函数,和窗口结合的函数,窗口函数

思维导图 判断函数 if(expr,v1,v2): 表达式结果为true返回v1,否则返回v2 ifnull(列名,dv): 列值为null返回dv,否则返回列值. nullif(expr1,expr2): 表达式1表达式2返回null,不等于返回表达式1的值. 窗口函数 作用: 可以为表新增一列,新增的列是什么取决于over()函数前面的函…