Linux 学习记录38(C高级篇)

news2024/9/20 22:49:19

Linux 学习记录38(C高级篇)

在这里插入图片描述

本文目录

  • Linux 学习记录38(C高级篇)
  • 一、shell中的分支语句
    • 1. case...in语句
    • 2. shell中的通配符
  • 二、shell中的循环结构
    • 1. while循环
    • 2. shell中的printf
    • 3. for循环
      • (1. 类似C中的格式
      • (2. shell中的格式
      • (3. 连续列表
    • 4. select ...in 语句
    • 5. 辅助控制关键字
      • (1. break
      • (2. continue
  • 三、shell中的函数
    • 1. 格式
    • 2. 调用/获取参数
    • 3. 接收返回值
    • 4. 函数内使用local关键字
  • 思维导图

一、shell中的分支语句

1. case…in语句

格式:case $变量名 in 表示开始
表达式1)
代码块
;; 相当于C语言中的break 且不能省略

*) 相当于default,*表示通配所有情况
代码块
;; 相当于C语言中的break 且不能省略,只有在最后一个分支才能省略

esac 表示结束

*)的位置会影响case in 语句的执行效果

#!/bin/bash
case "$val" in
	表达式1)
		shell语句
		;; #break;
	表达式2)
		shell语句
		;; #break;
	*) #相当于
		shell语句
		;; #break;
esac
=================================
#!/bin/bash
read val
case "$val" in
	10)
		echo "10"
		;; #break;
	20)
		echo "20"
		;; #break;
	*)
		echo "*"
		;; #break;
esac

2. shell中的通配符

* :通配一个或多个字符
? :通配一个字符
[] :通配[]内的一个字符
例:输入年和月份,判断该月有多少天,考虑润,平年
read -p "请输入year: " year
read -p "请输入month: " month
echo "--------------------"

case "$month" in
	1|3|5|7|8|10|12)
		echo "day: 31"
		;; #break;
	4|6|9|11)
		echo "day: 31"
		;; #break;
	2)
		if [ $(($year%4)) -eq 0 -a $(($year%100)) -ne 0 -o $(($year%400)) -eq 0 ]
		then
			echo "day: 28"
		else
			echo "day: 29"
		fi
		;; #break;
	*) echo "error"
esac
判断输入的1个字符是数字,小写字母,大写字母和其他符号
#!/bin/bash
read -p "请输入1个字符: " -n 1 ch

case "$ch" in
	[0-9])
		echo "是数字"
	;;

	[[:upper:]])
		echo "是小写字母"
	;;

	[[:lower:]])
		echo "是大写字母"
	;;

	*)
		echo "是其他符号"
	;;

esac

二、shell中的循环结构

在shell中 [][[]]是有区别的
	1. [] 是test指令
	2. [[]] 只能被一些shell解析器识别
	3. []内使用逻辑与和逻辑或,需要使用-a和-o参数,[[]]内可以直接使用||&&
	4. []内如果不加"" 可能不能正确识别字符串范围,[[]]可以正确识别

1. while循环

格式:

while [ 表达式 ] ---------> while test 
do
	表达式成立执行的代码块
done
===========================================
#!/bin/bash
i=1
while [ $i -le 5 ]; do

	echo "hello world"
	((i++))
done

2. shell中的printf

printf "%d %d %d" $val1 $val1 $val1

3. for循环

(1. 类似C中的格式

for((表达式1;条件;表达式2))
do
done
===========================
#!/bin/bash
for((i=0;$i<5;((i++))))
do
 echo "hello world"
done

(2. shell中的格式

执行逻辑:

字符串列表在的是变量可能出现的所有情况,for循环执行的次数和字符串的个数有关,变量要顺序遍历结果字符串列表中的每一种情况,for循环才结束

for 变量名 in 字符串列表
do
代码块
done
=====================
for i in 1 2 3 4 5
do
 echo "hello world"
done

(3. 连续列表

=用以输出连续的序列=

指令
seq 1 2 100
1-起始值 可省略
2-间隔值 可省略
输出:以1开始2为间隔,到100的数
=============================
{1..100}
间隔固定为1,且只能用在for循环中in的后面
=============================
#!/bin/bash
for i in `seq 1 1 5`
do
 echo "hello world"
done
=============================
#!/bin/bash
for i in {1..5}
do
 echo "hello world"
done

4. select …in 语句

格式

select 变量名 in 选项列表
do
	循环体
done

例:

#!/bin/bash
select i in a b c d e f
do
echo $i
done

运行效果:
在这里插入图片描述
执行逻辑:

  1. select·.·in语句会列出选项列表,#?提示用户选择,如果用户不选择,再提示一次选项列表
  2. 选择时,选的是编号不是具体的内容

通常和case...in结合使用

例:

#!/bin/bash
select i in linux wins unix
do
    case $i in 
        linux)
            echo "打开的是ubuntu系统"
            ;;
        wins)
            echo "打开的是wins系统"
            ;;
        unix)
            echo "打开的是unix系统"
    esac
done

5. 辅助控制关键字

break/continue

(1. break

break n #跳出n层循环

(2. continue

continue n #跳出n层循环本次循环

三、shell中的函数

1. 格式

格式:

function 函数名()
{
	函数体
	return 返回值
}

注意事项

  1. 函数头,没有返回值类型也没有形参列表
  2. 函数是否有返回值,根据函数具体实现来决定
  3. 函数是否有参数,根据调用时是否传参决定,函数头中的()内不能放任何内容
  4. function 可以加也可以不加
  5. shell中 函数的声明和定义不能分开

2. 调用/获取参数

调用:
函数名 参数1 参数2 参数3
函数结束参数和外部传参结束是一样的

#!/bin/bash
function fun()
{
	echo "$*"
}
fun 1 2 3 4 5 6

效果:
在这里插入图片描述

3. 接收返回值

  1. 使用命令置换符接收
    函数必须要有输出才能接收
#!/bin/bash
function fun()
{
	sum=$(($1+$2))
	echo $sum
}
ret=`fun 1 2 3 4 5 6`
echo $ret
  1. 使用$?接收
#!/bin/bash
function fun()
{
	sum=$(($1+$2))
	return $sum
}
fun 1 2 3 4 5 6
ret=$? #$?用于接收上一条指令的结果
echo $ret

4. 函数内使用local关键字

function fun()
{
	local sum=$(($1+$2))
	unset sum #清空局部变量
	return $sum
}

思维导图

在这里插入图片描述

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

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

相关文章

PyQt学习(二)-----图形的建立(柱状图,折线图,堆叠柱状图,饼图)

数据库列表如图所示&#xff0c;如何对其进行绘图&#xff1a; &#xff08;一&#xff09;柱状图的建立 (1)柱状图初始化 self.__iniBarChart() pyqtSlot()def __iniBarChart(self):chart QChart()chart.setTitle("Barchart 演示")chart.setAnimationOptions(QChar…

md5的特点以及加密原理

MD5的特点及加密原理 简介特点1.长度固定2.结果不可逆3.高度离散性4.抗碰撞性 适用场景1.用户密码保护2.文件传输完整性校验3.数字签名4.云盘秒传 加密原理一.1.对输入的内容进行补位使其长度变成 N * 512 448 &#xff08;即长度对512取余之后 余数为448&#xff09;2.再往后补…

【数据可视化】大作业(意向考研高校的数据可视化)

文章目录 前言一、数据介绍1.1 基本信息1.2 考研信息1.3 导师信息 二、预处理及分析2.1 数据预处理2.1.1 考研信息预处理2.1.2 导师信息预处理 2.2 数据分析 三、可视化方法及结果3.1 可视化方法3.2 可视化结果展示3.2.1 基本信息3.2.2 考研信息3.2.3 导师信息 四、总结五、附录…

pip install安装CPM-Bee出现ModuleNotFoundError: No module named ‘torch‘的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

WPF开发txt阅读器18:用json格式存储配置文件

文章目录 json参数保存 txt阅读器系列&#xff1a; 需求分析和文件读写目录提取类&#x1f48e;列表控件与目录&#x1f48e;快捷键翻页字体控件绑定&#x1f48e;前景/背景颜色书籍管理系统&#x1f48e;用树形图管理书籍语音播放&#x1f48e;播放进度显示&#x1f48e;快进…

网工大题题型总结(2)---设备类型及设备故障问题

&#xff08;一&#xff09;设备选择 2018年上半年 试题一 根据表 1-1 及图 1-1 可知&#xff0c;在图 1-1 中为了保护内部网络&#xff0c;实现包过滤功能&#xff0c;位置A 应部署(6)设备&#xff0c;其工作在(7)模式. &#xff08;6&#xff09;防火墙 &#xff08;7&a…

AIGC教育(续篇):探索掌握AIGC,引领未来的人才之路

&#xff08;本文阅读时间&#xff1a;5 分钟&#xff09; 1 未来人才的核心竞争力&#xff1a; 蓬勃绽放的潜力 展望未来&#xff0c;我们不禁思考&#xff1a;当自动化工具日益普及&#xff0c;且代替人力的成本并不高昂时&#xff0c;每个人的工具属性在未来工作中所占比重必…

Git提交规范

目录 1、commit message format消息格式 2、还原 3、提交类型 4、Subject 5、Body 6、Footer 7、git-commit-plugin 插件 以下规范参考Angular提交的规范。 对于如何格式化git commit消息&#xff0c;我们有非常精确的规则。 这导致更多 在浏览项目历史时&#xff0c;易…

【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 这个 Bug 是我做这个工程时遇到的&#xff1a;【Visual Studio】Qt 的实时绘图曲线功能&#xff0c;使用 C 语言&#xff0c;配合 Qt 开发串口通信界面。 文…

【面试】标准库相关题型(一)

文章目录 1. vector底层实现原理1.1 类构成1.2 构造函数1.3 插入元素1.4 删除元素1.5 读取元素1.6 修改元素1.7 释放空间 2. vector内存增长机制2.1 特点2.2 内存增长特性2.3 内存增长过程2.4 内存清理2.5 注意事项 3. vector中reserve和resize的区别3.1 共同点3.2 区别3.3 应用…

LangChain入门介绍

原文首发于博客文章LangChain介绍 我们先看看官方的定义 LangChain是一个基于语言模型开发应用程序的框架。它可以实现以下应用程序&#xff1a; 数据感知&#xff1a;将语言模型连接到其他数据源自主性&#xff1a;允许语言模型与其环境进行交互 LangChain的主要价值在于&…

现在可以使用开发者工具为苹果Vision Pro创建空间体验

库比蒂诺&#xff0c;加利福尼亚—苹果公司今天宣布&#xff0c;全新的软件工具及技术现已可供开发者使用&#xff0c;它们能够用于为苹果首款空间计算机—Apple Vision Pro&#xff0c;创造出独特且前所未有的应用体验。Vision Pro具备visionOS&#xff0c;这是全球首款空间操…

【ABAP】数据类型(三)「数据字典数据类型」

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

Unity简单的移动相机

Unity3D制作一个会移动的方块&#xff08;还不会移动照相机&#xff09;_SMG_DSG的博客-CSDN博客 接着上一次的文章代码&#xff0c;我们继续写&#xff0c;其实简单的移动也是非常简单&#xff0c;我们只需要使用一个相机一直面对着方块的函数就行了 好了&#xff0c;废话不…

Tkinter之窗口布局介绍

Tkinter之窗口布局介绍 关于Python 的Tkinter窗口基础可参见https://blog.csdn.net/cnds123/article/details/127227651 Tkinter 之几何管理器&#xff08;geometry manager&#xff09;&#xff0c;也叫布局&#xff08;layout&#xff09;&#xff0c;是用来控制窗体中小部…

STM32单片机(八)DMA直接存储器存取----第二节:DMA直接存储器存取练习(DMA数据转运和DMA+AD多通道)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

PyTorch深度学习实战(4)——常用激活函数和损失函数详解

PyTorch深度学习实战&#xff08;4&#xff09;——常用激活函数和损失函数详解 0. 前言1. 常用激活函数1.1 Sigmoid 激活函数1.2 Tanh 激活函数1.3 ReLU 激活函数1.4 线性激活函数1.5 Softmax 激活函数 2. 常用损失函数2.1 均方误差2.2 平均绝对误差2.3 分类交叉熵 2.4 实现自…

分享一组开关按钮

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>豆子开关</title><style>* {margin: 0;padding: 0;box-sizing: border-box;-webkit-tap-hi…

STM32单片机(八)DMA直接存储器存取----第一节:DMA直接存储器存取

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

使用Python制作简单的图表并设置图表元素

案例01 在python中制作简单的图表 import matplotlib.pyplot as plt # 导入matplotlib模块 x [1, 2, 3, 4, 5, 6] # 给出x坐标的数据 y [2, 4, 6, 8, 10, 12] # 给出y坐标的数据 plt.plot(x, y, color red, linewidth 3, linestyle solid) # 绘制折线图 plt.show() # …