Shell编程-6
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
感谢泷羽sec 团队的教学
视频地址:shell(6)if条件判断与for循环结构_哔哩哔哩_bilibili
一、if条件判断
在Shell脚本中,if语句用于基于条件的评估来执行不同的代码块。以下是if语句的基本结构和一些高级用法:
基本结构
if [ 条件 ]; then# 如果条件为真,则执行这里的命令
else# 如果条件为假,则执行这里的命令
fi
条件表达式
-
字符串比较:
"$str1" = "$str2":相等。"$str1" != "$str2":不等。
-
数值比较:
-eq:等于。-ne:不等于。-gt:大于。-lt:小于。-ge:大于等于。-le:小于等于。
-
文件测试:
-e:文件或目录存在。-f:文件存在。-d:目录存在。-r:文件可读。-w:文件可写。-x:文件可执行。
-
字符串测试:
-z:字符串长度为零。-n:字符串长度非零。
高级用法
-
使用
[[ ]]:- 提供了更多的功能,如正则表达式匹配和模式扩展。
- 自动引用变量,防止单词拆分和文件名扩展。
- 支持
&&和||作为逻辑运算符。
-
逻辑运算符:
-a:逻辑与。-o:逻辑或。
-
复合命令:
&&:如果前一个命令成功,则执行下一个命令。||:如果前一个命令失败,则执行下一个命令。
示例
#!/bin/bash# 字符串比较
if [ "$str1" = "$str2" ]; thenecho "字符串相等"
elseecho "字符串不相等"
fi# 数值比较
if [ $num1 -eq $num2 ]; theneco "数值相等"
elseecho "数值不相等"
fi# 文件测试
if [ -f "filename" ]; thenecho "文件存在"
elseecho "文件不存在"
fi# 字符串测试
if [ -z "$str" ]; thenecho "字符串为空"
elseecho "字符串非空"
fi# 逻辑运算符
if [ $num1 -gt 10 -a $num2 -lt 20 ]; thenecho "$num1 大于 10 且 $num2 小于 20"
fi
注意事项
- 总是使用双引号来引用变量和字符串,以避免空格和特殊字符引起的问题。
- 在
[[ ]]中使用==和!=进行字符串比较,而不是=和!=。
二、for循环结构
在Shell脚本中,for循环是一种用于重复执行一系列命令的控制流结构。它可以根据不同的参数和语法结构来迭代执行。以下是几种常见的for循环用法:
基本语法
for 变量 in 列表
do# 循环体中的命令
done
迭代列表中的每个元素
for item in element1 element2 element3
doecho "$item"
done
例子:
for str in "hello world"
doecho $str
done
这个脚本的作用是:
-
for str in "hello world":这行定义了一个for循环,其中str是循环变量,它将依次取得字符串"hello world"中每个单词的值。注意,如果字符串中包含空格,Shell会将其视为多个单词。 -
do:这是循环体开始的标志。 -
echo $str:这是循环体内的命令,它将打印出当前迭代的字符串(即循环变量str的值)。 -
done:这是循环体结束的标志。
当这个脚本执行时,它将输出:
hello
world
每个单词占一行,因为for循环将按照空格将字符串分割成单词,并在每次迭代中将其中一个单词赋值给变量str。
相关文章:
Shell编程-6
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:shell(6)if条件判断与for循环结构_哔哩哔哩_bilibili 一、if条件判断 在Shell脚本中,if语句用于基于条件的评估来执行不同的代码块。…...
使用 Postman 设置 Bearer Token 进行身份验证
学习笔记 1. 打开 Postman 并创建新请求 打开 Postman。 在左上角点击 按钮,创建一个新的请求。 2. 选择 HTTP 方法 在请求类型(默认为 GET)旁边的下拉菜单中,选择你需要的 HTTP 方法,如 POST、GET、PUT 等。 3…...
现在转前端怎么样?
互联网技术日新月异,软件开发者追逐技术浪潮的脚步从未停歇。在这个快速发展的行业中,如何规划自己的职业道路,选择合适的技术方向,成为了许多开发者面临的重要抉择。本文将围绕技术选择这个话题,分享一些深入的思考和…...
【算法一周目】滑动窗口(1)
目录 长度最小的子数组 解题思路 代码实现 无重复字符的最大字串 解题思路 代码实现 最大连续1的个数l l l 解题思路 代码实现 将x减到0的最小操作数 解题思路 代码实现 长度最小的子数组 题目链接:209. 长度最小的子数组题目描述: 给定一个…...
React Native 基础
React 的核心概念 定义函数式组件 import组件 要定义一个Cat组件,第一步要使用 import 语句来引入React以及React Native的 Text 组件: import React from react; import { Text } from react-native; 定义函数作为组件 const CatApp = () => {}; 渲染Text组件...
【C++笔记】list使用详解及模拟实现
前言 各位读者朋友们大家好!上期我们讲了vector的使用以及底层的模拟实现,这期我们来讲list。 目录 前言一. list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity1.2.4 list element access1.…...
【机器学习】机器学习中用到的高等数学知识-7.信息论 (Information Theory)
熵 (Entropy):用于评估信息的随机性,常用于决策树和聚类算法。交叉熵 (Cross-Entropy):用于衡量两个概率分布之间的差异,在分类问题中常用。 信息论作为处理信息量和信息传输的数学理论,在机器学习中具有广泛的应用。…...
《现代制造技术与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《现代制造技术与装备》是不是核心期刊? 答:不是,是知网收录的第二批认定学术期刊。 问:《现代制造技术与装备》级别? 答:省级。主管单位:齐鲁工业大学࿰…...
09 - Clickhouse的SQL操作
目录 1、Insert 1.1、标准 1.2、从表到表的插入 2、Update和Delete 2.1、删除操作 2.2、修改操作 3、查询操作 3.1、with rollup:从右至左去掉维度进行小计 3.2、with cube : 从右至左去掉维度进行小计,再从左至右去掉维度进行小计 3.3、with …...
如何解决pdf.js跨域从url动态加载pdf文档
摘要 当我们想用PDF.js从URL加载文档时,将会因遇到跨域问题而中断,且是因为会触发了PDF.js和浏览器的双重CORS block,这篇文章将会介绍:①如何禁用pdf.js的跨域?②如何绕过浏览器的CORS加载URL文件?②如何使…...
深入理解TTY体系:设备节点与驱动程序框架详解
往期内容 本专栏往期内容:Uart子系统 UART串口硬件介绍 interrupt子系统专栏: 专栏地址:interrupt子系统Linux 链式与层级中断控制器讲解:原理与驱动开发 – 末片,有专栏内容观看顺序 pinctrl和gpio子系统专栏…...
库的操作(MySQL)
1.创建数据库 语法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name说明: 大写的表示关键字 [ ] 是可…...
在 for 循环中,JVM可能会将 arr.length 提升到循环外部,仅计算一次。可能会将如何解释 详解
在 Java 的 for 循环中,JVM 有能力进行优化,将 arr.length 的访问提升到循环外部,避免每次迭代都重新计算 arr.length。这种优化主要是由于 JVM 的 即时编译器(JIT) 和 逃逸分析(Escape Analysis࿰…...
回溯--数据在内存中的存储:整数、大小端和浮点数的深度解析
目录 引言 1. 整数在内存中的存储 1.1 原码、反码和补码 1.2 为什么使用补码? 1.3 示例代码:整数的存储 2. 大小端字节序和字节序判断 2.1 什么是大端和小端? 2.2 为什么会有大端和小端之分? 2.3 字节序的判断小程序 2.…...
第二十二章 Spring之假如让你来写AOP——Target Object(目标对象)篇
Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...
探索设计模式:原型模式
设计模式之原型模式 🧐1. 概念🎯2. 原型模式的作用📦3. 实现1. 定义原型接口2. 定义具体的原型类3. 定义客户端4. 结果 📰 4. 应用场景🔍5. 深拷贝和浅拷贝 在面向对象编程中,设计模式是一种通用的解决方案…...
NLP论文速读(EMNLP 2023)|工具增强的思维链推理
论文速读|ChatCoT: Tool-Augmented Chain-of-Thought Reasoning on Chat-based Large Language Models 论文信息: 简介: 本文背景是关于大型语言模型(LLMs)在复杂推理任务中的表现。尽管LLMs在多种评估基准测试中取得了优异的成绩…...
JVM垃圾回收详解.②
空间分配担保 空间分配担保是为了确保在 Minor GC 之前老年代本身还有容纳新生代所有对象的剩余空间。 《深入理解 Java 虚拟机》第三章对于空间分配担保的描述如下: JDK 6 Update 24 之前,在发生 Minor GC 之前,虚拟机必须先检查老年代最大…...
什么是事务,事务有什么特性?
事务的四大特性(ACID) 原子性(Atomicity) 解释:原子性确保事务中的所有操作要么全部完成,要么全部不做。这意味着事务是一个不可分割的工作单元。在数据库中,这通常通过将事务的操作序列作为一个…...
深入解析:如何使用 PyTorch 的 SummaryWriter 进行深度学习训练数据的详细记录与可视化
深入解析:如何使用 PyTorch 的 SummaryWriter 进行深度学习训练数据的详细记录与可视化 为了更全面和详细地解释如何使用 PyTorch 的 SummaryWriter 进行模型训练数据的记录和可视化,我们可以从以下几个方面深入探讨: 初始化 SummaryWriter…...
从DEM到决策:如何用QGIS分析河北地形,为生态保护与项目选址提供依据?
从DEM到决策:QGIS地形分析在河北生态保护与项目选址中的实战指南 河北省复杂的地形地貌为各类生态保护和工程项目带来了独特挑战。作为华北地区生态屏障与经济发展的重要区域,如何科学评估地形特征直接影响着规划决策的质量。本文将带您用QGIS这一开源工…...
低成本搭建OpenClaw智能体:星图Qwen3-VL:30B镜像+飞书实战
低成本搭建OpenClaw智能体:星图Qwen3-VL:30B镜像飞书实战 1. 为什么选择本地部署OpenClaw 去年夏天,我接手了一个内容运营的兼职项目,需要每天从几十个信息源收集素材、整理成报告。最初尝试用ChatGPT Plus的API自动化处理,但两…...
GluonCV版本升级指南:从0.8到0.11的10大新特性详解
GluonCV版本升级指南:从0.8到0.11的10大新特性详解 【免费下载链接】gluon-cv dmlc/gluon-cv: GluonCV 是由DMLC(Apache MXNet背后的社区)开发的一个计算机视觉库,为研究人员和工程师提供了大量预训练模型、基准测试和工具&#x…...
LFM2.5-1.2B-Thinking-GGUF保姆级教程:Web界面汉化+响应式布局适配移动端指南
LFM2.5-1.2B-Thinking-GGUF保姆级教程:Web界面汉化响应式布局适配移动端指南 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型,特别适合在资源有限的环境中快速部署使用。这个镜像内置了GGUF模型文件和llama.cpp…...
Neeshck-Z-lmage_LYX_v2实战教程:异常友好提示机制与错误定位指南
Neeshck-Z-lmage_LYX_v2实战教程:异常友好提示机制与错误定位指南 1. 引言:当绘画工具变得“会说话” 想象一下,你兴致勃勃地打开一个AI绘画工具,输入了一段精心构思的描述,点击生成,然后……页面卡住了。…...
深度学习训练中loss震荡与不收敛的常见原因及实战调优策略
1. 为什么你的模型loss像过山车?先看懂这些典型症状 第一次打开TensorBoard看到自己的loss曲线像心电图一样上蹿下跳,那种感觉就像新手司机开车时方向盘失控。其实loss震荡和不收敛是深度学习中再常见不过的问题,但不同表现背后藏着完全不同的…...
探索视频采集技术:OBS Studio实现高效直播录制的创新方法
探索视频采集技术:OBS Studio实现高效直播录制的创新方法 【免费下载链接】obs-studio OBS Studio - 用于直播和屏幕录制的免费开源软件。 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio 在当今内容创作领域,视频采集技术是直播与…...
企业级工作流系统实战:30分钟从零搭建RuoYi-Flowable-Plus
企业级工作流系统实战:30分钟从零搭建RuoYi-Flowable-Plus 【免费下载链接】RuoYi-Flowable-Plus 本项目基于 RuoYi-Vue-Plus 进行二次开发扩展Flowable工作流功能,支持在线表单设计和丰富的工作流程设计能力。如果觉得这个项目不错,麻烦点个…...
信息发布平台毕设实战:从零构建高可用内容分发系统
背景痛点:为什么你的毕设平台总感觉“差点意思”? 很多同学在做“信息发布平台”这类毕业设计时,往往只关注功能实现,忽略了背后的架构和性能问题。结果就是,一个看似功能齐全的平台,一旦面临稍微复杂的场景…...
OpenClaw+GLM-4.7-Flash:个人财务数据处理自动化方案
OpenClawGLM-4.7-Flash:个人财务数据处理自动化方案 1. 为什么需要自动化财务处理 每个月末,我都会面对一堆散乱的银行流水、电子发票和Excel表格。手动整理这些数据不仅耗时,还容易出错。直到我发现OpenClaw这个开源自动化框架,…...
