当前位置: 首页 > news >正文

Linux/C高级(精讲)----shell结构语句、shell数组

shell脚本

功能性语句

test

可测试对象三种:字符串 整数 文件属性

每种测试对象都有若干测试操作符

1)字符串的测试:

s1 = s2 测试两个字符串的内容是否完全一样

s1 != s2 测试两个字符串的内容是否有差异

-z s1 测试s1 字符串的长度是否为0

-n s1 测试s1 字符串的长度是否不为0

2)整数的测试:

a -eq b 测试a 与b 是否相等 equal

a -ne b 测试a 与b 是否不相等 not equal

a -gt b 测试a 是否大于b greater than

a -ge b 测试a 是否大于等于b greater equal

a -lt b 测试a 是否小于b litter than

a -le b 测试a 是否小于等于b litter equal

3)文件属性的测试:

-d name 测试name 是否为一个目录

-f name 测试name 是否为普通文件

-e name 测试文件是否存在

#!/bin/bash
#A=5
#A=`expr $A + 1`
#((A++))
# read -p "input:" a b c d
# SUM=`expr $a \* $b + $c - $d / $b`
# ((S=a*b+c-d/b))
# echo $SUM
# echo $S#测试两个字符串的内容是否完全一样
VAR="nihao"
test $VAR = "hello"
echo $?#测试两个字符串的内容是否有差异
VAR="nihao"
test $VAR != "hello"
echo $?#测试字符串的长度是否为0
test -z $VAR
echo $?#测试字符串的长度是否不为0
test -n $VAR
echo $?
#测试两个数是否相等
test 10 -eq 20
echo $?
#测试两个数是否不相等
test 10 -ne 20
echo $?
#测试a是否 > b
test 10 -gt 20
echo $?
#测试a是否 >= b
test 10 -ge 20
echo $?
#测试a是否 < b
test 10 -lt 20
echo $?
#测试a是否 <= b
test 10 -le 20 
echo $?read -p "input:" F
#测试是否为一个目录
test -d $F
echo $?
#测试是否为普通文件
test -f $F
echo $?
#测试文件是否存在
test -e $F
echo $?

结构性语句

if语句

基本结构:

if 条件

then

命令表1

else

命令表2

fi

多路分支语句:

if 条件1

then

命令表1

elif 条件2

then

命令表2

fi

嵌套结构:

if 条件1

then

if 条件2

then

命令表1

fi

else

命令表2

fi

补充操作符:

-o 或运算 例如 [ $a -lt 20 -o $b -gt 100 ] 返回 true

-a 与运算 例如 [ $a -lt 20 -a $b -gt 100 ] 返回 false

! 非运算 例如 [ ! false ] 返回 true

&& 逻辑与 例如 [[ $a -lt 100 && $b -gt 100 ]] 返回 false

|| 逻辑或 例如 [[ $a -lt 100 || $b -gt 100 ]] 返回 true

| 位或 例如 echo $[2|2]

&位与 例如 echo $[2&1]

case语句

格式:

case 变量 in

模式1)

命令表1

;;

模式2)

命令表2

;;

*)

命令表n

;;

esac

练习:学生成绩管理系统,用shell中的case实现

90-100:A

80-89:B

70-79:C

60-69:D

<60:不及格

for循环

格式:

for 变量名 in 单词表

do

命令表

done

变量依次取单词表中的各个单词, 每取一次单词, 就执行一次循环体中的命令。循环次数由单词表中的单词数确定。命令表中的命令可以是一条, 也可以是由分号或换行符分开的多条。

for语句的几种书写格式:

1)for i in 1 2 3 4 do....done :

变量i从单词表中取值

2)for i do...done:

变量i从命令行取值,可以省略in单词表

3)for i in {1..10} do...done:

变量i从1-10个数中取值

4)for ((i = 0; i < 10; i++)) do...done:

书写格式类似c语言

while:

格式:

while 命令或表达式

do

命令表

done

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

练习:

分别用for和while实现1-10求和

循环控制语句

break n :结束n层循环

continue n: 结束n层的本次循环,继续下一次循环

数组

数组的赋值:

(1) arr=(1 2 3 4 5)

(2) arr=($1 $2 $3...)

(3) readabc

arr=($a $b $c)

(4) read -a arr

数组的调用:

${arr[i]} #引用数组元素,数组元素下标从0开始到n-1结束

arr[i]=10 #对数组元素重新赋值

${arr[@]} #遍历数组

${#arr[@]} #数组元素的个数

练习:

从终端输入3个整数,输出三个数中的最小值

冒泡排序:

选择排序:

函数

函数的定义方式

(1) 函数名()

{

命令表

}

(2) function 函数名()

{

命令表

}

函数的调用

函数名 参数列表

函数内 $1 $2 表示的是传递给函数的参数

作业:

用shell脚本试下以下功能:

判断当前路径下是否存在目录aa,如果不存在创建;遍历当前路径下的文件,如果是普通文件,将文件复制到aa目录下,并计算文件的个数。

相关文章:

Linux/C高级(精讲)----shell结构语句、shell数组

shell脚本 功能性语句 test 可测试对象三种&#xff1a;字符串 整数 文件属性 每种测试对象都有若干测试操作符 1&#xff09;字符串的测试&#xff1a; s1 s2 测试两个字符串的内容是否完全一样 s1 ! s2 测试两个字符串的内容是否有差异 -z s1 测试s1 字符串的长度是…...

14.kafka开机自启动配置

要在Linux(RHEL7.7)系统中设置kafka开机自启动&#xff0c;可以创建一个系统服务单元文件。以下是为详细配置部署&#xff0c;假设你已经安装了kafka并且可以通过kafka-server-start.sh命令启动它。 1.进入/lib/systemd/system目录 命令&#xff1a; cd /lib/systemd/system…...

11 享元(Flyweight)模式

享元模式 1.1 分类 &#xff08;对象&#xff09;结构型 1.2 提出问题 做一个车管所系统&#xff0c;将会产生大量的车辆实体&#xff0c;如果每一个实例都保存自己的所有信息&#xff0c;将会需要大量内存&#xff0c;甚至导致程序崩溃。 1.3 解决方案 运用共享技术有效…...

PHP JSON操作指南

PHP JSON操作指南 概述 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。PHP作为一门流行的服务器端脚本语言&#xff0c;支持对JSON数据进行读取、编写和解析。本文将…...

【学习笔记】计算机图形学的几何数学基础知识

3D坐标系 左手系和右手系 点 x,y,z与w(齐次坐标) 矩阵 第一个下标表示行号,第二个下标表示列号。矩阵乘法不满足交换律矩阵乘法=矩阵合并一个矩阵乘以它的逆矩阵=单位矩阵变化矩阵 平移矩阵 缩放矩阵 除了可以缩放, 还可以利用缩放,在给定右手系的情况确定左手系…...

Python因为网络原因安装依赖库报错

现象 在终端运行以下指令 pip install pyautogui pillow keyboard 出现报错&#xff0c;终端信息如下&#xff1a; PS D:\code\Python> pip install pyautogui pillow keyboard Collecting pyautoguiUsing cached PyAutoGUI-0.9.54.tar.gz (61 kB)Installing build depe…...

什么是卸荷器?风力发电为什么要用卸荷器

目前市场上&#xff0c;那些功率低于400W的小型风力发电机&#xff0c;普遍缺乏刹车、稳速或限速机制。只要有足够的风力&#xff0c;发电机便会开始转动并产生电力。风力越强&#xff0c;转速就越快&#xff0c;这可能导致发电机因转速过高而损坏&#xff0c;甚至发生风机头飞…...

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者 文章目录 目录 前言 一、启动SQL server服务的三种方法 1.不启动SQL server服务的影响 2.方法一&#xff1a;利用cmd启动SQL server服务 3.方法二&#xff1a;利用SQL Serv…...

大数据学习之Spark分布式计算框架RDD、内核进阶

一.RDD 28.RDD_为什么需要RDD 29.RDD_定义 30.RDD_五大特性总述 31.RDD_五大特性1 32.RDD_五大特性2 33.RDD_五大特性3 34.RDD_五大特性4 35.RDD_五大特性5 36.RDD_五大特性总结 37.RDD_创建概述 38.RDD_并行化创建 演示代码&#xff1a; // 获取当前 RDD 的分区数 Since ( …...

Unity 加载OSGB(webgl直接加载,无需转换格式!)

Unity webgl加载倾斜摄影数据 前言效果图后续不足 前言 Unity加载倾斜摄影数据&#xff0c;有很多的插件方便好用&#xff0c;但是发布到网页端均失败&#xff0c;因为webgl 的限制&#xff0c;IO读取失效。 前不久发现一个开源项目: UnityOSGB-main 通过两种方式在 Unity 中…...

tcp/ip网络协议,tcp/ip网络协议栈

TCP/IP网络协议和TCP/IP网络协议栈是互联网通信的基石&#xff0c;它们定义了电子设备如何连入因特网以及数据如何在它们之间传输的标准。以下是对TCP/IP网络协议和TCP/IP网络协议栈的详细解释&#xff1a; 一、TCP/IP网络协议 TCP/IP&#xff08;Transmission Control Proto…...

【Debug】the remote host closed the connection错误信息分析

出现的情况说明&#xff1a;QT软件。刚开始都可以连接成功 之后连接 断开几次 就会出现连接失败 错误信息是the remote host closed the connection。the remote host closed the connection广泛原因分析 这个错误通常意味着远端 STM32 服务器主动关闭了连接。可能的原因包括&a…...

SpringBoot扩展篇:@Scope和@Lazy源码解析

SpringBoot扩展篇&#xff1a;Scope和Lazy源码解析 1. 研究主题及Demo2. 注册BeanDefinition3. 初始化属性3.1 解决依赖注入3.2 创建代理 ContextAnnotationAutowireCandidateResolver#getLazyResolutionProxyIfNecessary3.3 代理拦截处理3.4 单例bean与原型bean创建的区别 4. …...

“AI隐患识别系统,安全多了道“智能护盾”

家人们&#xff0c;在生活和工作里&#xff0c;咱们都知道安全那可是头等大事。不管是走在马路上&#xff0c;还是在工厂车间忙碌&#xff0c;又或是住在高楼大厦里&#xff0c;身边都可能藏着一些安全隐患。以前&#xff0c;发现这些隐患大多靠咱们的眼睛和经验&#xff0c;可…...

通向AGI之路:人工通用智能的技术演进与人类未来

文章目录 引言:当机器开始思考一、AGI的本质定义与技术演进1.1 从专用到通用:智能形态的范式转移1.2 AGI发展路线图二、突破AGI的五大技术路径2.1 神经符号整合(Neuro-Symbolic AI)2.2 世界模型架构(World Models)2.3 具身认知理论(Embodied Cognition)三、AGI安全:价…...

论文阅读:InstanceDiffusion: Instance-level Control for Image Generation

CVPR2024文章 摘要&#xff1a; 文本到图像扩散模型产生高质量的图像&#xff0c;但不提供对图像中单个实例的控制。我们引入了InstanceDiffusion&#xff0c;它将精确的实例级控制添加到文本到图像扩散模型中。InstanceDiffusion 支持每个实例的自由形式的语言条件&#xff…...

7.攻防世界 wzsc_文件上传

打开题目页面如下 上传了一张带有木马的图片 返回的页面是空白的&#xff0c;不过路径变了 猜测存在根目录/upload 也可以通过dirsearch扫描根目录 命令&#xff1a; dirsearch -u http://61.147.171.105:65024/ -e* 终于得到了上传的文件的信息 但是测试发现.php文件以及.…...

以为是响应式对象丢失导致数据没有回显

背景&#xff1a;之前ruoyi生成的vue2代码&#xff0c; <el-form ref“form”&#xff0c;后面我改成vue3的写法&#xff0c;没有实例化form&#xff0c; 在vue3中是需要定义const form ref(); 导致点击了修改后&#xff0c;页面弹框显示出来&#xff0c;数据没有回显。 一直…...

来 Gitcode 免费体验 DeepSeek 蒸馏模型,开启 AI 探索新旅程

在 AI 技术飞速发展的时代&#xff0c;你是否也怀揣着对前沿科技的无限好奇与探索欲望&#xff1f;然而&#xff0c;昂贵的模型体验费用和复杂的操作流程&#xff0c;是不是让你一次次望而却步&#xff1f;现在&#xff0c;这些都不再是问题&#xff01;DeepSeek 蒸馏模型现已强…...

2.Mkdocs配置说明(mkdocs.yml)【最新版】

官方文件&#xff1a;Changing the colors - Material for MkDocs 建议详细学习一下上面的官方网站↑↑↑ 我把我目前的配置文件mkdocs.yml代码写在下面&#x1f447;&#x1f3fb; #[Info] site_name: Mkdocs教程 #your site name 显示在左上角 site_url: http://wcowin.wo…...

FastAPI + TinyDB并发陷阱与实战:告别数据错乱的解决方案

核心摘要本文针对在FastAPI框架下使用TinyDB&#xff08;JSON文件数据库&#xff09;时遇到的并发写入数据冲突、错乱问题&#xff0c;深入浅出地解释了问题根源&#xff0c;并提供了从“文件锁”到“内存队列”再到“乐观锁”的三种由浅入深的实战解决方案&#xff0c;帮助你根…...

记录模式 vs Lombok vs Record类,全维度性能与可维护性对比测试(含JMH压测数据)

第一章&#xff1a;Java记录模式的核心概念与演进背景Java记录模式&#xff08;Record Patterns&#xff09;是JDK 21中正式引入的预览特性&#xff08;JEP 440&#xff09;&#xff0c;并在JDK 22中进一步增强&#xff08;JEP 441&#xff09;&#xff0c;旨在为结构化数据解构…...

复旦微FMQL平台:memorytest工程实战指南与DDR稳定性验证

1. 从Procise导出memorytest工程 第一次接触复旦微FMQL平台时&#xff0c;我也被各种工程文件搞得晕头转向。memorytest工程作为内存测试的基础工具&#xff0c;其实导出过程比想象中简单得多。在Procise界面中找到memtest选项&#xff0c;就像在Windows资源管理器里找文件夹一…...

永磁同步电机多电机同步控制仿真:改进与对比的奇妙之旅

永磁同步电机多电机同步控制仿真&#xff0c;含改进对比在电机控制领域&#xff0c;永磁同步电机&#xff08;PMSM&#xff09;凭借其高效、节能等诸多优点&#xff0c;广泛应用于工业生产、电动汽车等多个重要领域。而当涉及多个永磁同步电机协同工作时&#xff0c;实现同步控…...

别再只查‘待办’了!Flowable任务查询的三种高级场景:拾取、归还与候选组权限控制详解

Flowable任务管理的三大高阶场景&#xff1a;从候选池到个人待办的完整控制策略 当我们在处理业务流程自动化时&#xff0c;任务管理往往是最容易被简化的环节。大多数开发者止步于基础的待办列表查询&#xff0c;却忽视了任务流转过程中的精细控制。本文将带您深入Flowable任务…...

Qwen3.5-9B-AWQ-4bit企业应用落地:电商商品图智能解析与文字提取实战

Qwen3.5-9B-AWQ-4bit企业应用落地&#xff1a;电商商品图智能解析与文字提取实战 1. 电商场景下的图片理解挑战 在电商运营中&#xff0c;每天需要处理海量商品图片。传统的人工审核和标注方式面临三大痛点&#xff1a; 效率瓶颈&#xff1a;人工处理一张商品图平均需要3-5分…...

ModTheSpire模组加载器全攻略:解锁杀戮尖塔无限可能

ModTheSpire模组加载器全攻略&#xff1a;解锁杀戮尖塔无限可能 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 副标题&#xff1a;从零开始的模组探索之旅——让你的游戏体验突破边界…...

避开这些坑!Mapbox图层管理实战:动态加载GeoJSON数据的正确姿势

Mapbox高级图层管理实战&#xff1a;GeoJSON动态加载与性能优化全解析 当处理省级以上GIS数据可视化时&#xff0c;Mapbox的图层管理能力直接决定了应用的流畅度和用户体验。许多开发者在使用GeoJSON数据源时&#xff0c;常遇到内存泄漏、渲染卡顿、交互延迟等问题。本文将深入…...

【分布式理论】CAP PACELC

文章目录一、引言二、CAP理论2.1 CAP分别指的是什么&#xff1f;2.2 CAP 的经典表述&#xff1a;三选二2.1 CP 系统&#xff08;牺牲可用性&#xff0c;保证一致性&#xff09;2.2 AP 系统&#xff08;牺牲一致性&#xff0c;保证可用性&#xff09;三、PACELC理论3.1 PACELC的…...

从LIF神经元到STDP学习:一个SNN识别MNIST的完整故事线(不只是代码)

从LIF神经元到STDP学习&#xff1a;揭秘脉冲神经网络如何"看见"数字 想象一下&#xff0c;当你看到数字"7"时&#xff0c;大脑中的神经元是如何协同工作&#xff0c;让你瞬间识别出这个符号的&#xff1f;这正是脉冲神经网络(SNN)试图模拟的生物智能过程。…...