从零学习Linux操作系统第二十八部分 shell脚本中的执行流控制

一、什么是执行流、循环执行流

执行流:改变执行顺序,使之更方便操作者
循环执行流:根据脚本是执行流再某一个状态下进行循环执行,进行多次执行后再往下走(for语句)

for语句
作用 为循环执行动作

for语句结构
for ##定义变量
do ##使用变量,执行动作
done ##结束标志
在这里插入图片描述
在这里插入图片描述
另外三种方式

在这里插入图片描述

在这里插入图片描述

for语句脚本练习

check_ip.sh
用此脚本检测10台与您当前主机直连主机是否网络通常
如果网络通常请显示主机的ip列表

在这里插入图片描述

二、执行流判断方法

条件语句

1)while…do语句

作用:
条件为真执行动作
语句结构
while ture (!–条件为真–)
do (!–条件成立所作循环动作–)
done (!–结束–)

在这里插入图片描述

2)until…do 语句

作用:
条件为假执行动作

语句结构
until false (!–条件为假–)
do (!–条件不成立所作循环动作–)
done (!–结束–)
在这里插入图片描述

3)if…then…elif…then…else…fi 语句

作用:
多次判定条件执行动作

代码结构
if (!–首次判断定–)
then (!–条件成立执行动作–)
elif (!–当首次判定不成立时再次判定–)
then (!–条件成立执行动作–)
... (!–elif可以书写多次–)
else (!–所有条件不成立执行动作–)
fi (!–结束–)

条件判定的脚本练习
please input username: lee
lee存在的话告诉lee是什么类型的用户并且再次输入Please input username: linux
linux 不存在时请输出
Please input password: 123
建立Linux用户并且设定密码为123

在这里插入图片描述

三、选择执行流控制

在这里插入图片描述

练习脚本

在这里插入图片描述

四、expect自动应答语句

问题脚本
#!/bin/bash
read -p “what’s your name:” NAME
read -p "How old are you: " AGE
read -p "Which objective: " OBJ
read -p "Are you ok? " OK
echo $NAME is $AGE’s old study $OBJ feel $OK
在这里插入图片描述
chmod +x ask.sh 赋予可执行权限

在这里插入图片描述

应答脚本之前先安装expect软件包
dnf install expect -y

在这里插入图片描述

应答脚本
vim test.exp

在这里插入图片描述
在这里插入图片描述

脚本练习

在这里插入图片描述

五、脚本中的控制器

控制器的类型:break,continue,exit

contiue ##终止当此次前循环提前进入下个循环
break ##终止当前所在语句所有动作进行语句外的其他动作
exit ##脚本退出

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

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

相关文章

opencv判断灰化情况

目的 先说说理论: 在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色,R分量,G分量,B分…

LeetCode LCR 055.二叉搜索树迭代器

实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在…

vue实现拖拽(vuedraggable)

实现效果: 左侧往右侧拖动,右侧列表可以进行拖拽排序。 安装引用: npm install vuedraggable import draggable from vuedraggable 使用: data数据: componentList: [{groupName: 考试题型,children: [{componentType: danxua…

SQLite 的使用

SQLite 是一个轻量级、自包含和无服务器的关系型数据库管理系统(RDBMS),广泛应用于嵌入式系统、移动应用程序和小中型网站。它易于创建、需要的配置较少,并且提供了用于管理和操作数据的强大功能集。本文,我们将带领你…

电路设计(26)——交通信号灯的multism仿真

1.功能要求 使用数字芯片设计一款交通信号灯,使得: 主干道的绿灯时间为60S,红灯时间为45S 次干道的红灯时间为60S,绿灯时间为45S 主、次干道,绿灯的最后5S内,黄灯闪烁 使用数码管显示各自的倒计时时间。 按…

【CMake】(5)搜索文件

方法1:使用aux_source_directory命令 aux_source_directory命令用于查找指定目录下的所有源文件,并将文件列表存储到一个变量中。这种方法简单易用,适合于源文件位于单一目录下的情况。 基本语法如下: aux_source_directory(<dir> <variable>)<dir>:…

openssl3.2 - 编译 - zlib.dll不要使用绝对路径

文章目录 openssl3.2 - 编译 - 编译时的动态库zlib.dll不要使用绝对路径概述测试zlib特性在安装好的目录中是否正常笔记70-test_tls13certcomp.t80-test_cms.t对测试环境的猜测从头再编译测试安装一次测试一下随便改变位置的openssl用到zlib时是否好使测试一下随便改变位置的op…

Docker Nginx 负载均衡搭建(服务宕机-配置高可用) - 附(Python案例,其它语言同理)

目录 一 . 概要 1. 什么是负载均衡 2. 负载均衡有哪些优势&#xff1f; &#xff08;1&#xff09;应用程序可用性 &#xff08;2&#xff09;应用程序可扩展性 &#xff08;3&#xff09;应用程序安全 &#xff08;4&#xff09;应用程序性能 3 . Nginx负载均衡调度策…

Java高级 / 架构师 场景方案 面试题(二)

1.双十一亿级用户日活统计如何用 Redis快速计算 在双十一这种亿级用户日活统计的场景中&#xff0c;使用Redis进行快速计算的关键在于利用Redis的数据结构和原子操作来高效地统计和计算数据。以下是一个基于Redis的日活统计方案&#xff1a; 选择合适的数据结构&#xff1a; …

核密度分析

一.算法介绍 核密度估计&#xff08;Kernel Density Estimation&#xff09;是一种用于估计数据分布的非参数统计方法。它可以用于多种目的和应用&#xff0c;包括&#xff1a; 数据可视化&#xff1a;核密度估计可以用来绘制平滑的密度曲线或热力图&#xff0c;从而直观地表…

【DOCKER】随手记

目录 1. 安装1.1 LINUX1.2 Windows 2. 常用配置2.1 普通权限运行2.2 开机自启动2.3 3 更换Docker镜像源2.4 更改默认存储位置 3. 显示带UI的软件4. 基于DOCKER的服务4.1 FTP4.2 Portainer4.3 Watchtower4.4 SiYuan4.5 GitLab4.5.1 创建容器4.5.2 克隆路径问题4.5.3 获取默认密码…

win系统下安装php8.3版本并配置环境变量的详细教程

本篇文章主要讲解在win系统下安装和配置php8.3版本&#xff0c;并配置环境变量的详细教程。 日期&#xff1a;2024年2月22日 作者&#xff1a;任聪聪 一、下载php8.3版本包 php8.3版本官方下载地址&#xff1a;https://windows.php.net/download#php-8.3 步骤一、打开下载地址…

【Unity】Unity与安卓交互

问题描述 Unity和安卓手机进行交互&#xff0c;是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一个工程 2.选择Empty Activity 然后点击Next 3.点击Finish完成创建 4.选择File-New-New Mo…

【python 3.9.18】windowns安装版

因为这个版本官方未提供&#xff0c;所以需要自己编译出来&#xff0c;其他没有的版本可以依据下面的进行生成一个exe也可行。 成品&#xff1a; https://gitee.com/greatLong/python-3.9.18/tree/master/python-3.9.18/PCbuild/amd64 1、环境准备 需要使用到 这里面还需要选…

【MATLAB GUI】 5. 图像处理菜单(菜单编辑器)

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 任务要求设计一个图像处理菜单&#xff0c;实现图像的打开导入、灰度处理、存储等功能 修改过文件名&#xff0c;所以运行的时候会有一点点报错&#xff0c;但是不影响运行 打开工具栏下边的菜单编辑器…

开窗Window和WindowAll的区别

在 Apache Flink 流处理框架中&#xff0c;窗口操作是处理流数据的重要部分。Flink 提供了时间窗口、计数窗口等多种窗口类型&#xff0c;用于将数据分割成不同的窗口进行聚合或其他处理。 Window 和 WindowAll 是 Flink 中窗口操作的两种不同方式&#xff0c;它们分别对应不同…

GIT仓库转移--携带原分支及提交记录

背景&#xff1a;最近公司仓库位置需要移动&#xff0c;想保留原有的仓库分支和提交记录 操作&#xff1a; 目的位置新建仓库&#xff08;要保证创建无误&#xff09;原仓库 git clone 到本地&#xff0c;git pull 保证代码最新找到原仓库.git/config 文件&#xff0c;修改 rem…

EPSON机器人与PC上位机软件C#网络TCP通讯

项目背景&#xff1a; 在非标设备PIN焊接机中用到了爱普生机器人。上位机软件使用c#wpf开发。主要逻辑在上位机中。用爱普生机器人给焊接平台实现自动上下料。 通讯方式&#xff1a;网络TCP通讯&#xff0c;Socket 角色&#xff1a;上位机为服务端&#xff0c;机器人为客户端…

Linux|centos7|录屏神器asciinema的编译安装和离线化安装使用

前言&#xff1a; asciinema这个录屏软件前面有一点研究&#xff0c;但它的部署安装比较麻烦&#xff0c;虽然此软件的安装部署方式是很多的&#xff0c;比如yum安&#xff0c;apt&#xff0c;brew&#xff0c;docker&#xff0c;pip&#xff0c;rust编译&#xff0c;docker等…

创建一个基于Node.js的实时聊天应用

在当今数字化社会&#xff0c;实时通讯已成为人们生活中不可或缺的一部分。无论是在社交媒体平台上与朋友交流&#xff0c;还是在工作场合中与同事协作&#xff0c;实时聊天应用都扮演着重要角色。与此同时&#xff0c;Node.js作为一种流行的后端技术&#xff0c;为开发者提供了…