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

Shell编程-6

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

感谢泷羽sec 团队的教学
视频地址:shell(6)if条件判断与for循环结构_哔哩哔哩_bilibili

 一、if条件判断

在Shell脚本中,if语句用于基于条件的评估来执行不同的代码块。以下是if语句的基本结构和一些高级用法:

基本结构

if [ 条件 ]; then# 如果条件为真,则执行这里的命令
else# 如果条件为假,则执行这里的命令
fi

条件表达式

  1. 字符串比较:

    • "$str1" = "$str2":相等。
    • "$str1" != "$str2":不等。
  2. 数值比较:

    • -eq:等于。
    • -ne:不等于。
    • -gt:大于。
    • -lt:小于。
    • -ge:大于等于。
    • -le:小于等于。
  3. 文件测试:

    • -e:文件或目录存在。
    • -f:文件存在。
    • -d:目录存在。
    • -r:文件可读。
    • -w:文件可写。
    • -x:文件可执行。
  4. 字符串测试:

    • -z:字符串长度为零。
    • -n:字符串长度非零。

高级用法

  1. 使用[[ ]]:

    • 提供了更多的功能,如正则表达式匹配和模式扩展。
    • 自动引用变量,防止单词拆分和文件名扩展。
    • 支持&&||作为逻辑运算符。
  2. 逻辑运算符:

    • -a:逻辑与。
    • -o:逻辑或。
  3. 复合命令:

    • &&:如果前一个命令成功,则执行下一个命令。
    • ||:如果前一个命令失败,则执行下一个命令。

示例

#!/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

这个脚本的作用是:

  1. for str in "hello world":这行定义了一个for循环,其中str是循环变量,它将依次取得字符串"hello world"中每个单词的值。注意,如果字符串中包含空格,Shell会将其视为多个单词。

  2. do:这是循环体开始的标志。

  3. echo $str:这是循环体内的命令,它将打印出当前迭代的字符串(即循环变量str的值)。

  4. 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):用于衡量两个概率分布之间的差异,在分类问题中常用。 信息论作为处理信息量和信息传输的数学理论,在机器学习中具有广泛的应用。…...

《现代制造技术与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《现代制造技术与装备》是不是核心期刊? 答:不是,是知网收录的第二批认定学术期刊。 问:《现代制造技术与装备》级别? 答:省级。主管单位:齐鲁工业大学&#xff0…...

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子系统专栏&#xf…...

库的操作(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&#xff0…...

回溯--数据在内存中的存储:整数、大小端和浮点数的深度解析

目录 引言 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…...

douyin-downloader:智能无水印视频批量获取工具,30倍提升内容管理效率

douyin-downloader:智能无水印视频批量获取工具,30倍提升内容管理效率 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代,短视频已成为信息传播的主要载…...

新手别怕!用Vivado仿真Verilog的8个经典电路,从JK触发器到频率计保姆级复盘

Vivado实战:从JK触发器到频率计的Verilog仿真全指南 刚接触FPGA开发的同学们,是否经常遇到这样的困境:明明理解了Verilog语法,却在Vivado仿真时频频报错?或是仿真波形与预期完全不符,却找不到问题所在&…...

高效利用CompactGUI社区协作:释放游戏压缩数据价值的全方位指南

高效利用CompactGUI社区协作:释放游戏压缩数据价值的全方位指南 【免费下载链接】CompactGUI Transparently compress active games and programs using Windows 10/11 APIs 项目地址: https://gitcode.com/gh_mirrors/co/CompactGUI 在数字游戏时代&#xf…...

自动驾驶避障实战:人工势场法的核心原理与MATLAB仿真

1. 人工势场法基础概念 第一次接触人工势场法是在研究生阶段的机器人学课程上,当时教授用了一个非常形象的比喻:想象你手里拿着一块磁铁,目标点是一块异性磁极的磁铁,障碍物则是同性磁极的磁铁。这个简单的物理现象,就…...

java毕业设计基于springboot+vue的自贡恐龙博物馆门户系统

前言 该系统采用前后端分离 的架构模式,后端使用Spring Boot框架构建,前端则使用Vue.js等框架来构建友好的用户界面。这种架构模式使得开发团队可以独立进行前后端的开发与维护,从而提高开发效率。一、项目介绍 开发语言:Java 框架…...

Mars3D实战:5分钟搞定GIS地图可视化开发(附完整代码示例)

Mars3D实战:5分钟搞定GIS地图可视化开发(附完整代码示例) 当GIS开发者第一次接触Mars3D时,最迫切的需求往往不是理解底层原理,而是快速实现一个可运行的地图可视化demo。本文将用厨房烹饪式的直白语言,带你…...

yolo系列演进分析

YOLO(You Only Look Once)作为计算机视觉领域最具影响力的目标检测算法系列之一,自2016年首次提出以来经历了持续的技术革新与架构演进。从最初的YOLOv1到2026年最新发布的YOLO26,这一系列不仅实现了从"单阶段检测"到"端到端推理"的范式转变,更在速度…...

本地部署Qwen3大模型+OpenClaw接入实战教程:从零实现私有化AI助手

> **标签**: AI开发,大模型,Ollama,OpenClaw,Python,本地部署 > **阅读时间**: 约15分钟 > **难度**: 中级## 一、引言本地部署大模型可确保**数据不出境、不上云**,满足金融、医疗等行业的合规要求;同时长期使用成本更低,适合高频…...

Qwen3-0.6B-FP8高性能推理:FP8量化不损质量,数学/代码生成保持SOTA

Qwen3-0.6B-FP8高性能推理:FP8量化不损质量,数学/代码生成保持SOTA 最近在部署大模型时,你是不是也经常遇到这样的困扰:模型效果确实不错,但推理速度慢、显存占用高,稍微复杂点的任务就得等半天。特别是像…...

终极M3U8下载神器:3步轻松掌握全网视频流保存技巧

终极M3U8下载神器:3步轻松掌握全网视频流保存技巧 M3U8 Downloader是一款强大的m3u8视频在线提取工具,专为流媒体下载设计,提供桌面客户端支持Windows和Mac系统。无论是在线课程、直播回放还是精彩影视内容,只需简单几步&#xf…...