Linux下的Shell基础——流程控制(三)

news2024/11/14 21:58:07

前言:

每门编程都有它独特的语法,比如C语言,Java等编程语言,有相同的地方也有自己独特的地方,但都离不开变量、运算符,条件判断、循环和函数这几个地方的学习,下面就让我们学习一下shell编程里的这些语法是怎样实现的吧

目录

一、if 判断

(1)基本语法

(2)案例实操

 二、case语句

(1)基本语法

(2)案例实操

 三、for循环

 (1)基本语法 1

(2)案例实操

(3)基本语法 2

(4)案例实操

 四、while循环

(1)基本语法

(2)案例实操

 五、read 读取控制台输入

(1)基本语法

(2)案例实操

 六、函数

 (1)系统函数

 (2)自定义函数


一、if 判断

(1)基本语法

        1)单分支

         2)多分支

 注意事项:

        ①[ 条件判断式 ],中括号和条件判断式之间必须有空格

        ②if 后要有空格

(2)案例实操

输入一个数字,如果是 1,则输出 haha,如果是 2,则输出 hehe, 如果是其它,则输出wuwu

=

 

 二、case语句

(1)基本语法

 注意事项:

        (1)case 行尾必须为单词in,每一个模式匹配必须以右括号“)”结束。

        (2)双分号;;表示命令序列结束,相当于 java 中的 break。 

        (3)最后的*)表示默认模式,相当于 java 中的 defaut

(2)案例实操

输入一个数字,如果是 1,则输出 haha,如果是 2,则输出 hehe,如果是其它,输出 wuwu

 

 三、for循环

 (1)基本语法 1

 for (( 初始值;循环控制条件;变量变化 ))

 do

         程序

done

(2)案例实操

        从 1 加到 10

(3)基本语法 2

for 变量 in 值 1 值 2 值 3…

 do

        程序

done

(4)案例实操

(1)打印所有输入参数

(2)比较$*和$@区别

$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n 的形式输出所有参数。

 

 四、while循环

(1)基本语法

        while [ 条件判断式 ]

         do

                 程序

         done

(2)案例实操

        从 1 加到 100

 五、read 读取控制台输入

(1)基本语法

        read (选项) (参数)

        ①选项:

                -p:指定读取值时的提示符;

                -t:指定读取值时等待的时间(秒)如果-t 不加表示一直等待

        ②参数变量:指定读取值的变量名

(2)案例实操

        提示 7 秒内,读取控制台输入的名称

 六、函数

 (1)系统函数

        basename

        (1)基本语法

                 basename [string / pathname] [suffix] (功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

                basename 可以理解为取路径里的文件名称

                选项:

                suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的suffix 去掉。

       (2)案例实操

        截取该~/shell/read_test.sh 路径的文件名称。

        

        dirname

        (1)基本语法

                dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名 (非目录的部分),然后返回剩下的路径(目录的部分))

                dirname 可以理解为取文件路径的绝对路径名称

        (2)案例实操

        获取 ~/shell/read_test.sh 文件的路

 (2)自定义函数

        (1)基本语法

                [ function ] funname[()]

                {

                         Action; [return int;]

                }

       (2)经验技巧

                1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一 样先编译。

                2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将 以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255) 

        (3)案例实操

        计算两个输入参数的和。

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

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

相关文章

CRM软件的功能与报价如何制定?

CRM软件很贵吗?CRM价格与系统功能、部署方式、用户数量、附加服务等有关。当然,不同的CRM厂商,也会有不同的定价模式。下面我们就来说说决定CRM系统报价的几个因素。 系统功能: CRM软件的功能越全面、越强大,其定价也…

携手共进:OpenAI与ScaleAI开展合作,为企业增强GPT模型微调功能

8 月 26 日消息,OpenAI 近日发布新闻,除了与Scale AI 展开深度合作外,OpenAI 还宣布他们计划扩展GPT系列的大语言模型。通过与Scale AI 的合作,OpenAI 能够在企业环境中定制GPT-3.5 Turbo和即将发布的GPT-4,以满足不同…

Typora上使用Mermaid语法展示流程图、时序图、甘特图

你已经安装Typora并打开了一个新文档后,可以按照以下详细步骤在Typora上使用Mermaid语法展示流程图、时序图、甘特图 流程图 使用graph LR声明开始,并使用箭头和连接符号定义节点之间的关系。例如,A --> B表示从节点A指向节点B的箭头连接。graph TB A[界面布局图] -->…

npm 卸载 vuecli后还是存在

运行了npm uninstall vue-cli -g,之后是up to date in,然后vue -V,版本号一直都在,说明没有卸载掉 1、执行全局卸载命令 npm uninstall vue-cli -g 2、删除vue原始文件 查看文件位置,找到文件删掉 where vue 3、再…

魏副业而战:闲鱼卖货做什么类目好?

我是魏哥,与其躺平,不如魏副业而战! 做闲鱼,有人做高客单价的,也有人做低客单价的。 之前魏哥有做宠物产品,利润低,每单赚几元,做的很累,但做过一段时间后发现有很多复…

左耳朵耗子:TCP 的那些事儿(上)

原文地址:https://coolshell.cn/articles/11564.html TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个…

nrm管理源仓库及发布私人npm包

使用nrm管理源及切换源仓库 1.安装nrm源管理器 npm install nrm -g2.查看目前现有的源仓库 通过 nrm ls 查看现有的源 nrm ls 输出:这是目前现有的源 3.切换不同的源 可以通过 nrm use xxx(源仓库名)来切换不同的源地址 nrm use taobao…

激活函数总结(二十):激活函数补充(SQNL、PLU)

激活函数总结(二十):激活函数补充 1 引言2 激活函数2.1 Square nonlinearity (SQNL)激活函数2.2 Piecewise Linear Unit (PLU)激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PR…

【Android】相对布局(RelativeLayout)最全解析

【Android】相对布局(RelativeLayout)最全解析 一、相对布局(RelativeLayout)概述二、根据父容器定位三、根据兄弟控件定位 一、相对布局(RelativeLayout)概述 相对布局(RelativeLayout&#x…

Xtrfy M42W鼠标说明书

下载:https://wwtf.lanzoul.com/ikXQh16gnmpe 密码:8h5t

OpenCV实战(基础知识三)

简介 OpenCV是一个流行的开源计算机视觉库,由英特尔公司发起发展。它提供了超过2500个优化算法和许多工具包,可用于灰度、彩色、深度、基于特征和运动跟踪等的图像处理和计算机视觉应用。OpenCV主要使用C语言编写,同时也支持Python、Java、C…

RocketMQ零拷贝原理

1 PageCache ●由内存中的物理page组成,其内容对应磁盘上的block。 ●page cache的大小是动态变化的。 ●backing store:cache缓存的存储设备。 ●一个page通常包含多个block,而block不一定是连续的。 1.1读Cache ●当内核发起一个读请求时&#x…

Meta发布AI编码工具,或可实现智能生成代码和调试代码

据悉,日前Meta推出名为 Code Llama 的AI编码工具,号称“最先进的大型编码语言模型”。 该模型基于Llama 2大型语言模型打造,可以理解为“Llama 2 的写代码专用版”,能够“生成新的代码并调试人类编写的工作”,目前已上…

Mycat事务补偿设计

1.概述 在使用数据分片场景下,单库下的事务处理无法满足系统的需求,因而需要进行分布式事务处理设计。 2.主要方案对比分析 处理分布式场景下的事务有很多种方案,主要方案如下表所示: 主要技术 优点 缺点 适用场景 XA with 2PC (JTA)、…

左耳朵耗子:TCP 的那些事儿(下)

原文地址:https://coolshell.cn/articles/11609.html 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是T…

Spark 7:Spark SQL 函数定义

SparkSQL 定义UDF函数 方式1语法: udf对象 sparksession.udf.register(参数1,参数2,参数3) 参数1:UDF名称,可用于SQL风格 参数2:被注册成UDF的方法名 参数3:声明UDF的返回值类型 ud…

部分调试记录

Ubuntu16.04纯命令行安装VMwareTools hudahuahudahua-virtual-machine:~$ sudo apt-get install open-vm-tools -yhudahuahudahua-virtual-machine:~$ sudo apt-get install open-vm-tools-desktop无法加载so文件,版本问题 [rootdragonboard /]# ./Qserial -qws .…

工厂生产作业流程合规检测

工厂生产作业流程合规检测系统通过yolov7网络模型算法,工厂生产作业流程合规检测对作业人员的操作行为进行全面监测,通过图像识别算法和数据分析,对人员的操作动作、工具使用、安全防护等方面进行检测和评估,能够实时监测工人的操…

10行Python代码能做出哪些酷炫的事情?

Python凭借其简洁的代码,赢得了许多开发者的喜爱。因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的操作。下面我们来看看,我们用不超过10行代码能实现些什么有趣的功…

【Linux】【驱动】驱动挂载的时候给驱动传递参数

【Linux】【驱动】驱动挂载的时候给驱动传递参数 绪论1.什么是驱动传参驱动传参就是传递参数给我们的驱动举例:2.驱动传参数有什么作用呢?3. 传递单个参数使用如下的数组4. 传递数组使用以下函数: 传递数字值代码指令 传递数组代码传递数组指令 绪论 1.什么是驱动…