shell8

until循环(条件为假的时候一直循环和while相反)

i=0
until [ ! $i -lt 10 ]
doecho $i((i++))
done

[外链图片转存中...(img-Ia9db1VH-1734696095965)]

分析
  1. 初始化变量
    • i=0:将变量i初始化为0。
  2. 条件判断 (until 循环)
    • until [ ! $i -lt 10 ]:这里的逻辑有些复杂。它使用了until循环,这意味着循环体将会一直执行,直到条件 [ ! $i -lt 10 ] 为真。
    • 条件内部包含了两个部分:
      • !:这是一个逻辑非操作符,它反转了后续表达式的真假值。
      • $i -lt 10:这是检查i是否小于10的条件。
    • 因此,[ ! $i -lt 10 ]实际上是在说:“当i不小于10时”。换句话说,只要i小于10,条件就为假,循环就会继续;一旦i达到或超过10,条件变为真,循环就会终止。
  3. 循环体
    • echo $i:输出当前的i值。
    • ((i++)):对i进行自增操作,每次循环后i都会加1。
  4. 结束循环 (done)
    • done:标志着until循环的结束

case语句

case 语句是 Bash 和其他 Unix shell 中的一种多分支选择结构,它提供了一种方便的方式来匹配一个值(通常是变量或命令的输出)与多个可能的模式。这在需要根据不同的输入执行不同代码块的情况下非常有用。

case 语句的基本语法

case $variable inpattern1)commands;;pattern2)commands;; pattern3 | pattern4)commands;;*)default_commands;;
esac
  • $variable:要匹配的表达式或变量。
  • patternN):定义匹配模式。每个模式后面跟着右括号)
  • commands:当 $variable 匹配到相应的模式时要执行的一系列命令。
  • ;;:结束一个模式和其对应的命令列表。
  • *|*):通配符模式,用于处理所有不匹配前面任何模式的情况,类似于 switch-case 中的 default
  • esac:结束 case 语句。
简单的例子

假设你有一个脚本,它根据用户提供的参数执行不同的操作:
如果你不想option是定义的变量,那你可以使用read -p "请你选择:" option

#!/bin/bashoption=startcase $option instart)echo "Starting...";;stop)echo "Stopping...";;restart)echo "Restarting...";;status)echo "Checking status...";;*)echo "Usage: $0 {start|stop|restart|status}";;
esac

[外链图片转存中…(img-5C6YLcxO-1734696095973)在这里插入图片描述

使用模式匹配

case 语句也支持简单的通配符模式匹配:

#!/bin/bashfile_extension=${1##*.}case $file_extension intxt|text)echo "Text file";;jpg|jpeg|png|gif)echo "Image file";;mp3|wav|flac)echo "Audio file";;*)echo "Unknown file type";;
esac

在这个例子中,${1##*.} 提取了文件名的扩展名部分,并使用 case 语句来识别文件类型。

基本函数学习

一个函数我们要怎么创建怎么引用

创建函数

你可以通过以下方式定义一个函数:

function_name() {# 函数体,这里是命令或代码块
}

或者,如果你喜欢更明确地指出这是一个函数,可以使用 function 关键字(这在某些版本的 Bash 中是可选的):

function function_name {# 函数体,这里是命令或代码块
}
示例:创建一个简单的函数
DemoFunc() {echo "hello world"
}

在这个例子中,DemoFunc 是一个函数名,当它被调用时,会执行函数体内的一系列命令,在这里就是打印 hello world 到标准输出。

引用(调用)函数

一旦定义了函数,你就可以通过函数名来调用它,后面不需要括号,除非你打算传递参数给函数。如果函数需要参数,可以在调用时将它们放在函数名后面的括号内。

示例:调用函数
DemoFunc

这行代码将调用 DemoFunc 函数,并执行其内部的命令。

传递参数给函数

你可以向函数传递参数,这些参数可以在函数体内通过 $1, $2, 等等来引用。$# 可以用来获取传递给函数的参数数量,而 $@$* 可以用来引用所有参数。

示例:带参数的函数
GreetUser() {echo "Hello, $1!"
}GreetUser "Alice"  # 调用函数并传递参数 "Alice"

在这个例子中,GreetUser 函数接受一个参数,并使用它来个性化问候消息。

返回值

Bash 函数可以通过 return 语句返回一个整数值,通常用于表示函数执行的状态。默认情况下,函数返回最后一条命令的退出状态。如果你想返回非整数数据,可以使用 echo 或其他形式的标准输出,并在调用处使用命令替换(如 $(...))来捕获输出。

示例:返回值
AddNumbers() {local sum=$(( $1 + $2 ))echo $sum  # 使用 echo 输出结果
}result=$(AddNumbers 5 3)  # 捕获函数的输出
echo "The result is $result"

在这个例子中,AddNumbers 函数接收两个参数并将它们相加,然后通过 echo 输出结果。调用时,我们使用命令替换来捕获函数的输出,并将其赋值给变量 result

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

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

相关文章

【游戏中orika完成一个Entity的复制及其Entity异步落地的实现】 1.ctrl+shift+a是飞书下的截图 2.落地实现

一、orika工具使用 1)工具类 package com.xinyue.game.utils;import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.impl.DefaultMapperFactory;/*** author 王广帅* since 2022/2/8 22:37*/ public class XyBeanCopyUtil {private static MapperFactory mappe…

【十进制整数转换为其他进制数——短除形式的贪心算法】

之前写过一篇用贪心算法计算十进制转换二进制的方法,详见:用贪心算法计算十进制数转二进制数(整数部分)_短除法求二进制-CSDN博客 经过一段时间的研究,本人又发现两个规律: 1、不仅仅十进制整数转二进制可…

【Harmony Next】多个图文配合解释DevEco Studio工程中,如何配置App相关内容,一次解决多个问题?

解决App配置相关问题列表 1、Harmony Next如何配置图标? 2、Harmony Next如何配置App名称? 3、Harmony Next如何配置版本号? 4、Harmony Next如何配置Bundle ID? 5、Harmony Next如何配置build号? 6、Harmony Next多语言配置在哪…

Mybatis分页插件的使用问题记录

项目中配置的分页插件依赖为 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.7</version></dependency>之前的项目代码编写分页的方式为&#xff0c;通过传入的条件…

【技术干货】移动SDK安全风险及应对策略

移动SDK&#xff08;软件开发工具包&#xff09;已经成为应用开发中不可或缺的一部分。通过SDK&#xff0c;开发者能够快速集成分析、广告调度、音视频处理、社交功能和用户身份验证等常见功能&#xff0c;而无需从零开始构建。这不仅能节省时间和资源&#xff0c;还能提高开发…

易语言OCR银行卡文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

新能源汽车充电需求攀升,智慧移动充电服务有哪些实际应用场景?

在新能源汽车行业迅猛发展的今天&#xff0c;智慧充电桩作为支持这一变革的关键基础设施&#xff0c;正在多个实际应用场景中发挥着重要作用。从公共停车场到高速公路服务区&#xff0c;从企业园区到住宅小区&#xff0c;智慧充电桩不仅提供了便捷的充电服务&#xff0c;还通过…

QT多媒体开发(一):概述

Qt Multimedia 模块为多媒体编程提供支持。多媒体编程实现的功能主要包括播放音频和视频文件&#xff0c;通过麦克风录制音频&#xff0c;通过摄像头拍照和录像等。 QT6 中多媒体模块相比QT5变化较大&#xff0c;所以用QT6编译 QT5写的多媒体 程序基本无法通过。 Qt 5 多媒体模…

人才画像系统如何支撑企业的人才战略落地

在当今竞争激烈的商业环境中&#xff0c;企业的人才战略对于其长期发展至关重要。为了有效实施人才战略&#xff0c;企业需要一套精准、高效的人才管理工具&#xff0c;而人才画像系统正是满足这一需求的关键解决方案。本文将探讨人才画像系统如何支撑企业的人才战略落地&#…

基于Python3编写的Golang程序多平台交叉编译自动化脚本

import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数&#xff0c;设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…

初学stm32 --- 定时器中断

目录 时钟选择&#xff1a; 内部时钟选择​编辑 时钟计算方法&#xff1a; 计数器模式 向下计数模式&#xff08;时钟分频因子1&#xff0c;ARR36&#xff09; 向上计数模式&#xff08;时钟分频因子1&#xff0c;ARR36&#xff09; 中央对齐计数模式&#xff08;时钟分频因…

Pytorch | 从零构建Vgg对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集Vgg网络结构特点性能应用影响 Vgg结构代码详解结构代码代码详解特征提取层 _make_layers前向传播 forward 训练过程和测试结果代码汇总vgg.pytrain.pytest.py 前面文章我们构建了AlexNet对CIFAR10进行分类&#xff1a; Py…

Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期 在SAP内部用 YYYYMMDD没有问题 外部传入参数

sql server索引优化语句

第一步 建一个测试表 --create table TestUsers --( -- Id int primary key identity(1,1), -- Username varchar(30) not null, -- Password varchar(10) not null, -- CreateDateTime datetime not null --)第二步 插入100w数据 大概1分钟执行时间 ----插入数据…

day-21 内核链表以及栈

1.昨日作业 1.删除指定节点 找到删除就完事了&#xff0c;双向可以停在删除处。 /***************************** 功能&#xff1a;删除指定结点&#xff08;通过姓名&#xff09;* 参数&#xff1a;phead&#xff1b;oldname; * 返回&#xff1a;成功0&#xff0c;失-1&…

我在广州学 Mysql 系列——有关 Mysql 函数的练习

ℹ️大家好&#xff0c;我是LXJ&#xff0c;通过Mysql各种函数的相关学习&#xff0c;本文将通过一些练习来巩固Mysql的函数~~ 明天就冬至啦&#xff0c;提前大家冬至快乐&#xff01;&#xff01;“差不多冬至&#xff0c;一早一晚还是有雨”~ 复习&#xff1a;&#x1f449;《…

第3节 测试套件数据驱动

创建Excel、 CSV测试数据 1. 从主菜单中选择 File > New > Test Data。将显示新的测试数据对话框。输入测试数据的名称并选择数据类型作为Excel File/ CSV File 。单击OK。 2. 浏览到要导入Katalon Studio的Excel File, 选择Excel中的sheetName&#xff0c;或者CSV文件…

tomato靶场攻略

前提&#xff1a;kali和tomato的连接方式都为net模式 tomato的默认网络连接方式为桥接模式&#xff0c;导入前注意修改&#xff0c;将tomato.ova的镜像导入虚拟机中 出现此页面则表示导入成功&#xff0c;打开kali虚拟机终端&#xff0c;切换为root权限 arp-scan -l 浏览器访…

【数据安全】如何保证其安全

数据安全风险 数字经济时代&#xff0c;数据已成为重要的生产要素。智慧城市、智慧政务的建设&#xff0c;正以数据为核心&#xff0c;推动城市管理的智能化和公共服务的优化。然而&#xff0c;公共数据开放共享与隐私保护之间的矛盾日益凸显&#xff0c;如何在确保数据安全的…