linux shell脚本编程(分支语句、循环语句)

news2024/9/20 14:26:52

一、分支语句

1、语法结构 :

if 表达式
then 命令表
fi

如果表达式为真 , 则执行命令表中的命令 ; 否则退出 if 语句 , 即执行 fi 后面的语句。
if 和 fi 是条件语句的语句括号 , 必须成对使用 ;命令表中的命令可以是一条 , 也可以是若干条。

2、语法结构为 :

if 表达式
then 命令表 1
else 命令表 2
fi

        如果表达式为真 , 则执行命令表 1 中的命令 , 再退出 if 语句 ; 否则执行命令表 2 中的语句 , 再退出 if 语句 .
        注意 : 无论表达式是否为真 , 都有语句要执行 . 

3、test 命令使用总结

二、多路分支语句 

#!/bin/bash 
 
#学生成绩分级管理
#80-100 A
#60-79  B
#0-59   C
 
read -p "input score: " val
 
#要求输入的范围是0-100
#-o  或
#-a  与
#-!  非
 
#-gt 小于等于
#-lt 大于等于
 
#if [ $val -gt 100 -o $val -lt 0 ]
if [ $val -gt 100 ] || [ $val -lt 0 ]
then
	echo "input error val"
	exit 
fi
 
val=`expr $val / 10`
 
case $val in
	8 | 9 | 10)
			echo "A"
			;;
	6 | 7)
			echo "B"
			;;
	*)
			echo "C"
			;;   #;;只有最后一个模式可以省略,前面不可以
esac
 

三、循环语句

1、for 的用法

        当循环次数已知或确定时,使用 for 循环语句来多次执行一条或一组命令。格式为 :

for 变量名 in 单词表
do
命令表
done

        变量依次取单词表中的各个单词 , 每取一次单词 , 就执行一次循环体中的命令 . 循环次数由单词表中的单词数确定 . 命令表中的命令可以是一条 , 也可以是由分号或换行符分开的多条。
        如果单词表是命令行上的所有位置参数时 , 可以在 for 语句中省略 “ in 单词
表” 部分。 

#!/bin/bash 
#$* 代表一个整体
#$@ 代表一个一个的
filename=`ls`
for file in $filename
do
	if [ -f $file ]
	then
		echo "$file is a file"
	else
		echo "$file is not a file"
	fi
done
#!/bin/bash 
#for file in 1 2 3 4 5 
for ((i = 0; i < 5; i = i+1))
do
	echo "$i"
done

2、while用法

语法结构为:

while 命令或表达式
do
命令表
done

        while 语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。
        while 语句的退出状态为命令表中被执行的最后一条命令的退出状态。

3、break 和 continue

        break n 则跳出 n 层 ;
        continue 语句则马上转到最近一层循环语句的下一轮循环上 ,continue n 则转到最近 n 层循环语句的下一轮循环上 . 

四、函数的定义

1、基本语法:

function name() {
statements
[return value]
}

function 是 Shell 中的关键字,专门用来定义函数;
name 是函数名;
statements 是函数要执行的代码,也就是一组语句;
return value 表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。 

#!/bin/bash 

function fun(){
	echo "hello word"
	return 0
}

fun
#$? 获取函数的返回值
echo $?

2、函数的调用 

3、变量的作用域 

全局作用域:在脚本的其他任何地方都能够访问该变量。
局部作用域:只能在声明变量的作用域内访问。
声明局部变量的格式:

Local variable_name =value 

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

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

相关文章

Flink源码学习资料

Flink系列文档脑图 由于源码分析系列文档较多&#xff0c;本人绘制了Flink文档脑图。和下面的文档目录对应。各位读者可以选择自己感兴趣的模块阅读并参与讨论。 此脑图不定期更新中…… 文章目录 以下是本人Flink 源码分析系列文档目录&#xff0c;欢迎大家查阅和参与讨论。…

leetcode日记(42)螺旋矩阵

我使用的是递归&#xff0c;每次递归遍历一圈矩阵&#xff0c;将遍历结果塞进结果vector中&#xff0c;每次遍历修改上下左右边界&#xff0c;直至遍历后其中两边界重合或交错。 class Solution { public:vector<int> spiralOrder(vector<vector<int>>&…

MySQL双主双从实现方式

双主双从&#xff08;MM-SS&#xff09; 前言 避免单一主服务器宕机&#xff0c;集群写入能力缺失 从 1 复制 主1 &#xff0c;从 2 复制 主 2 主 1 复制 主 2&#xff0c;主 2 复制主 1 也就是 主 1 和主 2 互为主从。主1主2互为主从&#xff0c; 是为了以下情景&#xff0c…

Fork_Join模式:分治和Work-Stealing的完美结合

引言 在计算机科学领域&#xff0c;解决大规模数据和复杂计算任务的需求促使了并行计算模型的发展。Fork/Join模式以其独特的分治和Work-Stealing结合的方式&#xff0c;成为解决可分解并行问题的一项卓越选择。本文将重点探讨Fork/Join模式中分治和Work-Stealing的关键优势&a…

【网络】掌握网络基础概念

文章目录 OSI七层模型TCP/IP五层&#xff08;或四层&#xff09;模型为什么要有TCP/IP协议网络传输的基本流程网络传输流程图数据包封装和分用 网络中的地址管理IP地址Mac地址比较IP地址和Mac地址 OSI七层模型 OSI即Open System Interconnection,开发系统互连。OSI七层模型是一…

电气电工增加收入需规避的16大陷阱

电工接线是电气工程中非常重要的环节&#xff0c;为什么实施项目之后&#xff0c;存在电工叫苦&#xff0c;老板说亏&#xff0c;这到底是什么原因&#xff1f;是什么影响了电工的效率&#xff0c;阻碍了电工收入的增加&#xff1f; 下面我们汇总一下平时在项目中遇到的陷阱&a…

spring核心内容基本解读、spring中IOC控制反转入门案例,debug带你剖析Spring容器机制和结构(图文讲解,简单易懂)。

目录 1.spring核心内容大概解读 2.spring的IOC(控制反转容器机制剖析) 2.1 来份快速入门案例 2.2 debug剖析spring容器的机制和结构 1.spring核心内容大概解读 1. 在线文档 : https://docs.spring.io/spring-framework/docs/current/reference/html/ 2. 离 线 文 档 …

STM32智能健康监测系统教程

目录 引言环境准备智能健康监测系统基础代码实现&#xff1a;实现智能健康监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;健康监测与管理问题解决方案与优化收尾与总结 1. 引言 智能健康监测系统通…

SDXL 1.0 下载和部署

SD XL 1.0 重磅更新&#xff01;免费开源可商用&#xff08;附在线使用本地部署教程&#xff09; - 优设网 - 学设计上优设 三、本地部署 SDXL 1.0 SDXL 1.0 的源文件已经在 Huggingface 上开源了&#xff0c;我们可以通过 Stable Diffusion WebUI 在本地免费使用 SDXL 1.0&am…

[C/C++入门][ifelse]19、制作一个简单计算器

简单的方法 我们将假设用户输入两个数字和一个运算符&#xff08;、-、*、/&#xff09;&#xff0c;然后根据所选的运算符执行相应的操作。 #include <iostream> using namespace std;int main() {double num1, num2;char op;cout << "输入 (,-,*,/): &quo…

python项目为什么用WSGI

小背景 Java用的时间久了&#xff0c;web项目启动的时候直接启动主程序就行&#xff0c;因为spring web项目内置了Tomcat web服务器&#xff0c;服务器的配置一般也是采用默认的配置&#xff0c;所以很少关注底层实现&#xff0c;关注点主要在应用程序功能。 初学python的时候…

DDei在线设计器-HTML渲染

Html渲染 HtmlViewer插件通过将一个外部DIV附着在图形控件上&#xff0c;从而改变原有图形的显示方式。允许使用者自己定义HTML通过HTML元素。本示例演示了通过Html来扩展渲染图形&#xff0c;从而获得更加丰富的图形展现。 通常情况下&#xff0c;我们创建的图形控件&#xff…

Wireshark抓取HTTP

HTTP请求响应 使用wireshark抓取 本地机器是192.168.33.195&#xff0c;远程机器是192.168.32.129&#xff0c;远程HTTP服务端口是9005 TCP/IP实际共分为4层&#xff0c;抓包信息中可以看到各层的数据&#xff0c;最上面的数据帧包含了所有数据。 附&#xff1a;抓取本地H…

【Harmony】SCU暑期实训鸿蒙开发学习日记Day2

目录 Git 参考文章 常用操作 ArkTS的网络编程 Http编程 发送请求 GET POST 处理响应 JSON数据解析 处理响应头 错误处理 Web组件 用生命周期钩子实现登录验证功能 思路 代码示例 解读 纯记录学习日记&#xff0c;杂乱&#xff0c;误点的师傅可以掉了&#x1…

体验智慧校园学工管理的社团类型功能

在智慧校园学工管理的框架下&#xff0c;社团类型的精细化管理成为了激发学生兴趣、促进社团多样性与规范性的关键。这一功能的核心在于构建一个清晰的社团分类体系&#xff0c;确保每一种社团都能在其所属领域内蓬勃发展&#xff0c;同时&#xff0c;也便于校园管理者进行有效…

C#与C++交互开发系列(一):引言:为什么需要C#与C++交互开发

C#与C交互开发系列&#xff08;一&#xff09;&#xff1a;引言&#xff1a;为什么需要C#与C交互开发 欢迎来到C#与C交互开发系列博客的第一篇。在这个系列中&#xff0c;我们将探讨如何在C#与C之间实现互操作性&#xff0c;并逐步深入理解其应用场景和技术实现。本文将介绍什么…

植物大战僵尸全新版本Q版少女助阵好感度系统加持安卓winmac全兼容

植物大战僵尸全新版本Q版少女助阵好感度系统加持安卓winmac全兼容 链接: https://pan.baidu.com/s/11UFm4r8FKhkGAxM8dLVA8Q?pwdqnx8 提取码: qnx8

C++ ───List的使用

目录 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list的迭代器失效 1.1 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&…

算法——双指针(day2)

目录 202.快乐数 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 11.盛最多水的容器 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 202.快乐数 力扣链接&#xff1a;202.快乐数 题目解析&#xff1a; 本文中最重要的一句话就是重复平方和…

Elasticsearch基础(三)

目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.3.精准查询 1.4.地理坐标查询 1.5.复合查询 2.搜索结果处理 2.1.排序 2.2.分页 2.3.高亮 2.4.总结 3.RestClient查询文档 3.1.快速入门 3.2.match查询 3.3.精确查询 3.4.布尔查询 3.5.排序、分页 3.6.…