Shell编程 --流程控制

Shell编程

Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

流程控制

shell编程的流程控制有:if-else语句、for循环、while语句、无限循环、until循环、case … esac、跳出循环。

if-else语句

if 语句:

#!/bin/sh
#if 控制语句#if 语句语法格式
# if command;
# then
#     code
# fiif [ `ps -ef | grep -c "ssh"` -gt 1 ];
thenecho "true"
fi
--------------
true

if else 语法格式:

#else格式# if command;
# then
#     code
# else
#     code
# fi
if ((10>20))
thenecho "10是大于20的"
elseecho "10不大于20"
fi
------------------
10不大于20

elif语法

# elif格式
# if command;
# then
#     code
# elif command2
# then
#     code
# *n
# else
#     code
# fia=10
b=20
if [ $a -eq $b ];
thenecho "a=b"
elif [ $a -gt $b ]
thenecho "a>b"
elif [ $a -lt $b ]
thenecho "a<b"
fi
---------------
a<b

循环

for循环

与其他编程语言类似,Shell支持for循环。

for循环一般格式为:

for循环
for i in xxx;
docode
done

顺序输出字符串中的字符:

for i in I\'m good at coding;
doecho $i
done
------------
I'm
good
at
coding

顺序输出当前列表中的数字:

for loop in 1 2 3 4 5;
doecho $loop
done
---------
1
2
3
4
5

while循环

while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为:

#while循环
while condition
docode
done
int=1
while [ $int -le 5 ];
doecho $intlet "int++"
done
---------
1
2
3
4
5

死循环

# 死循环
echo "请按ctrl+d结束"
echo -n "请输入你喜欢的电影:"
while read film;
doecho "${film}是好电影"
done
=========================
#或
while :
doecho "im handsome"
done

until循环

格式:

# until 循环 直到条件为真为止
until condition
docommand
done
a=0
until [ ! $a -lt 10 ]
doecho $aa=`expr $a + 1`
done
---------
0
1
2
3
4
5
6
7
8
9

case … esac

case … esac 为多选择语句,与其他语言中的 switch … case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

格式:

在这里插入图片描述

case 工作方式如上所示,取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

#!/bin/sh
# case esac
echo "请输入1-4之间的数字"
read -p "请输入你的数字" num
case $num in1)echo "you choose 1";;2)echo "you choose 2";;3)echo "you choose 3";;4)echo "you choose 4";;*)echo "you choose others";;
esac

匹配字符串:

vol="hhh"
case $vol in "hhh")echo "you are hhhhhh";;"xxx")echo "you are xxxxxx";;"www")echo "you are wwwwww";;
esac

跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell 使用两个命令来实现该功能:break 和 continuebreak 命令

  1. break 命令允许跳出所有循环(终止执行后面的所有循环)。
  2. continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
echo "welcome to Amusement park"
echo "please inter a number between 1-4"
while :
doread -p "please inter your number: " numcase $num in1|2|3|4)echo "you choose 1-4 you are great";;*)echo "you choose others you are bad"break;;esac
done

总结

本篇介绍了shell编程的流程控制:

  1. if-else语句
  2. 循环:
    1. for循环:遍历循环
    2. while循环:符合条件循环
    3. 死循环:一直循环
    4. until循环:一直循环知道符合条件为止
  3. case … esac:模式匹配
  4. 跳出循环:
    1. break:跳出所有循环。
    2. continue:跳出当前循环。

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

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

相关文章

跨optimistic rollup原子互操作:Shared Validity Sequencing

1. 引言 Succinct Labs团队CEO和CTO&#xff0c;以及Ellipsis Labs合伙人一起&#xff0c;于2023年6月22日发布博客 Shared Validity Sequencing&#xff0c;认为&#xff1a; 以太坊扩容的未来之一就是拥有成千上万个 rollup。 如今&#xff0c;主流的 rollup 都是 optimis…

Unity3D 物体圆周运动

Unity3D 实现一个 2D 物体沿着圆周进行运动。 物体圆周运动 前段时间在开发一个小游戏时&#xff0c;需要实现火箭沿着一个圆形轨道进行圆周运动。 以前面试的时候也被问到过这类问题&#xff08;如何让一个 2D 物体做圆周运动&#xff09;&#xff0c;所以还是记录一下实现…

【区块链】控制台的配置、操作及常用命令②

常用命令-账户管理 常用命令-区块信息 在控制台中编译部署智能合约 启动节点 在fisco目录下 bash nodes/127.0.0.1/start_all.sh启动控制台 cd ~/fisco/console && bash start.sh部署合约 deploy HelloWorldtransaction hash: 交易的哈希值 contract address&#x…

Linux:基础操作指令

Linux的操作特点&#xff1a;纯命令行&#xff08;虽然也有图形化界面&#xff0c;但主要是工程师使用&#xff0c;意义不大&#xff09; windows的操作特点&#xff1a;图形化界面&#xff08;也有纯命令行的形式&#xff0c;但其更贴近大众&#xff0c;命令行学习成本高&…

Android之复制文本(TextView)剪贴板

效果图&#xff1a; 功能简单就是点击“复制”&#xff0c;将邀请码复制到 剪贴板中 布局 <androidx.constraintlayout.widget.ConstraintLayoutandroid:id"id/clCode"android:layout_width"dimen/dp_0"android:layout_height"dimen/dp_49"…

LTrack:实现夜间多目标追踪,并开放低光多目标追踪数据集LMOT

摘要 低光场景在现实应用中很常见&#xff08;例如&#xff0c;夜间的自动驾驶和监控&#xff09;。最近&#xff0c;多目标跟踪在各种实际用例中受到了很多关注&#xff0c;但黑暗场景中的多目标跟踪却很少被考虑。在本文中&#xff0c;我们专注于黑暗场景中的多目标跟踪。为…

Java | Leetcode Java题解之第313题超级丑数

题目&#xff1a; 题解&#xff1a; class Solution {public int nthSuperUglyNumber(int n, int[] primes) {int[] dp new int[n 1];int m primes.length;int[] pointers new int[m];int[] nums new int[m];Arrays.fill(nums, 1);for (int i 1; i < n; i) {int minN…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第五篇 文件系统构建篇-第七十四章 buildroot构建文件系统

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

CnosDB 元数据集群 – 分布式时序数据库的大脑

CnosDB 是一个分布式时序数据库系统&#xff0c;其中元数据集群是核心组件之一&#xff0c;负责管理整个集群的元数据信息。 1. 概述 CnosDB 是一个分布式时序数据库系统&#xff0c;其中元数据集群是核心组件之一&#xff0c;负责管理整个集群的元数据信息。元数据包括数据库…

回文链表(Leetcode)

题目 给你一个单链表的头节点 &#xff0c;请你判断该链表是否为 回文链表。如果是&#xff0c;返回 &#xff1b;否则&#xff0c;返回 。 解题 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextdef isPalindrome(head: ListNode) -> …

rpc框架怎么使用

这是我们提供RPC的服务类&#xff1a; class MprpcApplication { public:static void Init(int argc, char **argv);static MprpcApplication& GetInstance();static MprpcConfig& GetConfig(); private:static MprpcConfig m_config;MprpcApplication(){}MprpcApplica…

【数据结构】栈的概念、结构和实现详解

本文来介绍一下数据结构中的栈&#xff0c;以及如何用C语言去实现。 1. 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。 栈中元素遵循后进先出…

API 接口设计原则:RESTful 与 GraphQL

RESTful 接口 REST 的全称是 REpresentational State Transfer&#xff0c;是一种 Web API 的设计风格 RESTful API 设计 6 大原则 一个 RESTful 风格的接口应该满足如下的 6 点原则&#xff1a; 统一接口&#xff1a;For example, the HTTP-based REST APIs make use of th…

OpenCV及rembg去除图像背景

OpenCV去除图像背景 去除图像背景&#xff0c;需要综合使用二值化&#xff08;thresholding&#xff09;、腐蚀&#xff08;erosion&#xff09;、膨胀&#xff08;dilation&#xff09;以及位运算&#xff08;bitwise operations&#xff09;&#xff0c;代码如下&#xff1a…

【启明智显方案分享】6.86寸高清显示屏音频效果器解决方案

一、项目概述 本方案旨在设计一款集成6.86寸高清触摸显示屏的音频效果器&#xff0c;通过HMI&#xff08;Human-Machine Interface&#xff09;芯片Model 4驱动&#xff0c;实现高清晰度的视觉交互。该设备不仅支持音乐、麦克风及温响音量的精细控制&#xff0c;还内置丰富的预…

Mybatis学习-day18

Mybatis学习-day18 数据持久化是将内存中的数据模型转换为存储模型&#xff0c;以及将存储模型转换为内存中数据模型的统称。例如&#xff0c;文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。 MyBatis 支持定制化 SQL、存储过程以及高级映射&#xff0c…

Python 字典 ({})的概念与操作

1、使用字典 在Python中&#xff0c;字典(dictionary)是一系列键值对(k-v pair)。每个键都有相应的值对应&#xff0c;使用键来访问与之关联的值&#xff0c;与键关联的值可以为数、字符串、列表乃至字典。 在Python中&#xff0c;字典放在花括号&#xff08;{}&#xff09;中…

MySQL1 DDL语言

安装与配置 官网&#xff1a; MySQL :: Download MySQL Installer 阿里云&#xff1a; MySQL8 https://www.alipan.com/s/auhN4pTqpRp 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘」APP &#xff0c;无需下载极速在线查看&#xff0c;视频原画倍速…

opencascade AIS_ViewController源码学习 视图控制、包含鼠标事件等

opencascade AIS_ViewController 前言 用于在GUI和渲染线程之间处理视图器事件的辅助结构。 该类实现了以下功能&#xff1a; 缓存存储用户输入状态&#xff08;鼠标、触摸和键盘&#xff09;。 将鼠标/多点触控输入映射到视图相机操作&#xff08;平移、旋转、缩放&#xff0…

联想QuickFix工具中心,一款综合性电脑维护和管理工具

联想QuickFix工具中心是联想公司推出的一款综合性电脑维护和管理工具&#xff0c;它集成了众多实用的电脑维护工具&#xff0c;如系统优化、硬盘清理、网络优化、硬件诊断等&#xff0c;旨在为用户提供一个便捷的平台来解决电脑日常使用中遇到的各种问题。该工具中心适用于Wind…