常见的 set 选项与空变量检查
在编写 Bash 脚本时,使用 set
命令中的一些选项可以帮助我们在脚本执行过程中及时捕获错误和潜在问题,避免脚本在出错时继续执行,提高脚本的可靠性和健壮性。
set -e
:遇到错误就停
set -e
的作用是:一旦脚本中的某个命令出错(返回非 0 状态),脚本就会立刻停止执行。默认情况下,Bash 会忽略命令的错误,继续执行后面的命令,这有时会导致更严重的问题。
例子:
#!/bin/bash
set -emkdir /some/directory
cp /nonexistent/file /some/directory
echo "这个不会执行"
在没有 set -e
的情况下,cp
失败后,脚本会继续执行,可能会导致后面的命令错误。而加上 set -e
后,当 cp
命令失败时,脚本会立刻停止执行,不会继续出错。
set -u
:空变量检查
set -u
(也叫 set -o nounset
)会让脚本在引用一个没有被定义的变量时抛出错误并停止。有时候我们可能会不小心打错变量名或者忘记初始化某个变量,set -u
能及时发现并停止脚本,避免出现意外的错误。
例子:
#!/bin/bash
set -uusername=$1
echo "Hello, $username"
如果没有传入参数,脚本会报错,因为 username
没有定义。set -u
让我们提前知道变量没有赋值,避免后续操作出错。
set -e
和 set -u
连用
通常,set -e
和 set -u
会一起使用,因为它们可以互相配合,提供更高的脚本安全性。set -e
可以确保遇到错误时立刻停止,避免错误继续蔓延;而 set -u
则可以确保在使用未定义变量时立刻报错,防止误用空变量或打错变量名。
例子:
#!/bin/bash
set -e
set -uflie="test.txt"
echo "Reading file: $flie"
cat $flie
这里,如果我们打错了 file
为 flie
,set -u
会报错,告诉我们 flie
没有定义,从而避免后续执行出错。
总结
set -e
:脚本遇到错误时立即退出,防止错误继续蔓延。set -u
:如果使用了空变量或未定义变量,脚本会报错并停止执行。
相关文章:
常见的 set 选项与空变量检查
在编写 Bash 脚本时,使用 set 命令中的一些选项可以帮助我们在脚本执行过程中及时捕获错误和潜在问题,避免脚本在出错时继续执行,提高脚本的可靠性和健壮性。 set -e:遇到错误就停 set -e 的作用是:一旦脚本中的某个…...
JS 创建对象方法
创建对象的三种方法 3 通过构造函数 自定义构造函数 构造函数 快速定义多个对象 自定义构造函数...
IMX6ULL2025年最新部署方案:最新的UBootLinux和Rootfs部署正点原子Alpha开发板指南
正点原子Alpha IMX6ULL开发板2025年最新部署方案:基于Ubuntu24.04平台开发,部署最新的UBoot/Linux和BusyBox Rootfs部署指南 前言 笔者实在绷不住比较旧的方案了,广义流行的方案是使用2016年发布的Uboot来引导Linux4.1.15,配…...
threeJs实现裸眼3D小狗
一、实现效果 使用threeJs实现裸眼3D小狗,效果如下,其实如果将小狗换成建模小狗,效果更好,这个是模拟了一只小狗。 二、实现代码 代码如下: <!DOCTYPE html> <html> <head><title>星空小狗…...
ZYNQ笔记(二):MIO 、EMIO
版本:Vivado2020.2(Vitis) 任务:使用GPIO MIO 和 EMIO 实现按键 KEY 控制 LED( 两个PL端LED、两个PS端KEY) 目录 一、MIO 、EMIO 介绍 二、硬件设计 三、软件设计 四、效果 一、MIO 、EMIO 介绍 …...
Cygwin编译安装Acise
本文记录Windows下使用Cygwin编译安装Acise的流程。 零、环境 操作系统Windows11Visual Studio CodeVisual Studio Code 1.92.0Cygwin 一、工具及依赖 1.1 Visual Studio Code 下载并安装Visual Studio Code, 同时安装以下插件, Task Explorer Output Colorizer …...
ubuntu22.04 安装-ODBC驱动-SQLserver
1.ISO下载 中科大 Index of /ubuntu-releases/http://mirrors.ustc.edu.cn/ubuntu-releases/ 2.VMware Workstation创建虚拟机 3.更换清华源或者中科大的源 Ubuntu 24.04更换清华源_哔哩哔哩_bilibili 中科大镜像源: Ubuntu - USTC Mirror Help 清华源 ubuntu | 镜…...
[数据结构]Trie字典树
GPT的介绍 🧠 一句话总结: 字典树是一种专门用来存很多字符串的“超级前缀树”,查找某个字符串或前缀的时候,特别快! ✍️ 举个生活例子(类比): 你想做一个词典(Dictio…...
【网络安全】Linux 命令大全
未经许可,不得转载。 文章目录 前言正文文件管理文档编辑文件传输磁盘管理磁盘维护网络通讯系统管理系统设置备份压缩设备管理其它命令前言 在网络安全工作中,熟练掌握 Linux 系统中的常用命令对于日常运维、日志分析和安全排查等任务至关重要。 以下是常用命令的整理汇总,…...
Xcode警报“Ignoring duplicate libraries: ‘-lc++’” 警报
目录 前言 一、问题出现的原因 二、解决步骤 1. 检查构建设置中的链接器标志 2. 检查依赖中的重复库 3. 清除派生数据: 4. 检查冲突的 C 库 5. 更新 CocoaPods: 前言 有时候我们会看到Xcode警报:Ignoring duplicate libraries: ‘-lc…...
WebStorm中使用live-server插件
文章目录 1. 前提条件1.1 已安装Node1.1.1 淘宝的镜像1.2 安装live-server1.3 安装WebStorm2. Windows配置hosts3. WebStorm配置live-server3.1 WebStorm创建3.2 启动 live-server1. 前提条件 1.1 已安装Node Windows PowerShell 版权所有(C) Microsoft Corporation。保留所…...
Python 中使用单例模式
有这么一种场景,Web服务中有一个全局资源池,在需要使用的地方就自然而言引用该全局资源池即可,此时可以将该资源池以单例模式实现。随后,需要为某一特殊业务场景专门准备一个全局资源池,于是额外复制一份代码新建了一个…...
【基于LangChain的千问大模型工具调用】 Function CallingTool Calling简易示例
目录 示例代码 运行结果 功能:根据用户输入自动选择数学计算/天气查询工具处理 "用户输入 → 意图分析 → 工具调用 → 结果返回" 库名解析:【langchain库名解析】-CSDN博客 示例代码 # 模块1:依赖导入 from langc…...
银河麒麟服务器操作系统 V10 SP1 中玩转firewalld防火墙
Hey小伙伴们~👋 今天来聊聊怎么在银河麒麟服务器操作系统 V10 SP1 中玩转firewalld防火墙!🛡️ 这个强大的工具能帮你动态管理防火墙规则,还支持区域概念,让你的网络流量控制更灵活!🎉 &#x…...
信创服务器网络更稳了!链路聚合Bonding实战
原文链接:信创服务器网络更稳了!链路聚合Bonding实战 Hello,大家好啊!今天给大家带来一篇信创服务器操作系统上链路聚合(Bonding)配置实战的文章。链路聚合可以让两块网卡协同工作,提高服务器网…...
沐渥科技详解氮气柜操作指南
氮气柜是一种通过持续注入高纯度氮气,维持柜内惰性气体环境的设备,用于存储半导体晶圆或其他敏感元件,防止氧化、吸湿和污染。氮气柜操作指南是怎样的?下面沐渥小编给大家介绍一下。 一、操作前准备 (1)安全…...
Netty之ChannelOutboundBuffer详解与实战
深入理解Netty的高低水位线机制及其应用实践 在高性能网络编程中,Netty作为一个广泛使用的异步事件驱动的Java框架,其高效的流量控制机制对于系统的稳定性和性能至关重要。本文将深入探讨Netty中的高低水位线(High/Low Water Mark࿰…...
学习Python的优势体现在哪些方面?
文章目录 前言易于学习和使用应用领域广泛丰富的开源库和社区支持跨平台兼容性职业发展前景好 前言 学习 Python 具有多方面的优势,这使得它成为当今最受欢迎的编程语言之一,以下为你详细介绍。 易于学习和使用 语法简洁易懂:Python 的语法…...
每天五分钟玩转深度学习PyTorch:搭建LSTM算法模型完成词性标注
本文重点 本文通过LSTM算法模型来解决一个实际问题,也就是如何使用LSTM完成词性预测,下面我们搭建两个模型,一个是单词级别的,另外一个是字母级别的,大概的步骤就是,字母级别的LSTM将每个单词的字母作为输入,然后取最后一个时刻作为整个单词的表示,然后将文本中所有的…...
ANP协议深度解析:智能体网络协议的演进与革新
引言 随着人工智能(AI)技术的快速发展,多智能体系统(Multi-Agent Systems, MAS)逐渐成为解决复杂问题的核心范式。然而,智能体之间的高效协作一直面临通信标准不统一、资源分配冲突、动态环境适应能力不足等…...
如何降低论文的AIGC检测率,减少“AI味”
要降低论文的AIGC(AI生成内容)检测率,减少“AI味”,关键在于让论文更自然、个性化,并符合学术规范。以下是具体方法: 1. 避免直接复制AI生成内容 ❌ 错误做法:直接使用DeepSeek等工具生成的整段…...
安装npm install element-plus --save报错
今天安装npm install element-plus --save报的错,豆包提示说是项目里使用的 eslint 版本是 7.32.0,而 vue/eslint-config-standard9.0.1 要求的 eslint 版本是 ^9.10.0。总之就是说版本不兼容 报错: While resolving: vue3_project0.1.0 np…...
Python代码缩进统一规范
一、Python缩进的重要性:逻辑与可读性的桥梁 1. 语法规则的核心 Python与其他编程语言显著不同之处在于,它使用缩进来表示代码块的层次结构。不像C、Java等语言依靠大括号{}来明确函数体、循环体和条件语句的范围,Python完全依赖缩进来界定这些逻辑单元。例如,在一个if条…...
蓝桥杯基础数论入门
一.试除法 首先我们要了解,所有大于1的自然数都能进行质因数分解。试除法作用如下: 质数判断 试除法通过验证一个数是否能被小于它的数(一般是用2到用根号x)整除来判断其是否为质数。根据定义,质数只能被1和自身整除…...
一个插件,免费使用所有顶级大模型(Deepseek,Gpt,Grok,Gemini)
DeepSider是一款集成于浏览器侧边栏的AI对话工具,可免费使用所有顶级大模型 包括GPT-4o,Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0,Deepseek R1满血版等 以极简交互与超快的响应速度,完成AI搜索、实时问答、内容创作、翻译、…...
nginx入门,部署静态资源,反向代理,负载均衡使用
Nginx在linux上部署静态资源 概念介绍 Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。 相对于Tomcat,Nginx处理…...
微信小程序中使用ECharts 并且动态设置数据
项目下载地址 GitHub 地址 https://github.com/ecomfe/echarts-for-weixin 将当前文件夹里的内容拷贝到项目中 目录: json: {"usingComponents": {"ec-canvas": "../components/ec-canvas/ec-canvas"} }wxml: <ec…...
【愚公系列】《高效使用DeepSeek》064-跨文化谈判
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
云原生环境Jvm内存占用持续高位问题排查
生产内存占用过高问题排查 1、问题描述 一个tomcat应用,部署在云原生集群上,云原生监控显示内存占用率持续偏高,最大占用率、平均占用率都在90%多,但是倒没有OOM什么的。 2、问题复现 凭借对此应用的了解,很快就在测…...
linux下io操作详细解析
在 Linux 系统下,IO(输入/输出)操作是程序与外部设备(如文件、网络等)交互的重要方式。Linux 提供了丰富的系统调用和库函数来支持各种 IO 操作。以下是对 Linux 下 IO 操作的详细解析,包括文件 IO、网络 I…...
【在校课堂笔记】Python 第 9 节课 总结
- 第 91 篇 - Date: 2025 - 04 - 10 Author: 郑龙浩/仟墨 【Python 在校课堂笔记】 文章目录 南山-第 9 节课字符串的各种操作一 string二 string 的索引1 索引介绍2 示例 - 索引使用 三 切片1 **结构**2 示例 四 回文数 – 切片的应用五 对手机号进行脱敏处理六 注意七 读取字…...
AcWing 6099. 座位
原题目链接 问题描述 有 n 头奶牛(n ≥ 5),编号为 1 ∼ n,按照某种顺序围着一张圆桌坐成一圈。 奶牛之间存在如下的朋友关系: 如果两头奶牛相邻,则它们是朋友;如果两头奶牛之间只隔着一头奶…...
MySQL SQL Mode
SQL Mode 是 MySQL 中一个重要的系统变量,它决定了 MySQL 应遵循的 SQL 语法规则和数据验证规则。 什么是 SQL Mode SQL Mode 定义了 MySQL 应该支持的 SQL 语法以及执行数据验证的方式。通过设置不同的 SQL Mode,可以让 MySQL 在不同程度上兼容其他数据…...
linux不同用户共享同一anaconda
这里写目录标题 1、anaconda安装2、所有账号可以访问conda 按一下步骤顺序执行,可使linux上不同权限隔离的用户可以同时访问anaconda。 1、anaconda安装 step1:anaconda是通过root账号安装在某个自定义目录下(如:/data/software/…...
Langflow 远程命令执行漏洞复现(CVE-2025-3248)(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前言…...
如何在 Excel 中处理并拆分你提供的这种混合单位的库存数据。
使用 Power Query (获取与转换数据) - 最推荐 这是处理这类复杂、不规范数据的最强大、最灵活的方法,尤其适合数据量大或需要重复处理的情况。 加载数据到 Power Query: 选中你的数据区域。 在 Excel 菜单栏点击 数据 选项卡。 在 获取和转换数据 功能…...
OpenHarmony荷兰研习会回顾 | 仓颉语言赋能原生应用开发实践
近日,由全球顶级学术峰会EuroSys/ASPLOS和OpenHarmony社区在荷兰鹿特丹合办的操作系统深度研习会圆满收官,本次研习会以"架构探秘-开发实践-创新实验"三位一体的进阶模式,为全球开发者构建了沉浸式技术探索平台。其中,由…...
广州华锐视点考试考核系统:引领智能考核新时代
在当今数字化飞速发展的时代,考试考核作为教育与培训成果检验的重要环节,也在不断寻求创新与突破。广州华锐视点凭借其先进的技术实力,打造出了一套功能强大、高效便捷的考试考核系统,为各类教育机构、企业培训等提供了全面且优质…...
Harmony鸿蒙应用开发-录音保存并播放音频
功能介绍: 录音并保存为m4a格式的音频,然后播放该音频,参考文档使用AVRecorder开发音频录制功能(ArkTS),更详细接口信息请查看接口文档:ohos.multimedia.media (媒体服务)。 知识点: 熟悉使用AVRecorder…...
室分系统(室内分布系统)详解
室分系统(室内分布系统,Indoor Distribution System)是用于解决建筑物内部信号弱、覆盖差、容量不足的专用通信网络,广泛应用于商场、写字楼、地铁、机场等场景。 1. 室分系统的作用 解决信号覆盖问题:消除室内盲区&am…...
基于 Qt4 的图片处理工具开发(二):增加对比度调节、界面布局优化、多线程操作
废话不多说,先来看一下最终的界面效果 一、引言 在上一篇博客中,我们完成了图片处理工具的基础框架,实现了拖拽加载、亮度调节和角度旋转功能。本文将聚焦界面布局重构、对比度调节功能扩展以及多线程性能优化,进一步提升工具的实…...
禁止页面滚动的方法-微信小程序
在微信小程序中,有几种方法可以禁止页面滚动: 一、通过页面配置禁止滚动 在页面的JSON配置文件中设置,此方法完全禁止页面的滚动行为: {"disableScroll": true }二、通过 CSS 样式禁止滚动 在页面的WXSS文件中添加&…...
基于landsat与Modis影像的遥感技术的生态环境质量评价
本次将结合ArcGIS与ENVI,发布 landsat与Modis影像的遥感技术的生态环境质量评价技术专题,专题课程学习! 在反映生态质量的诸多自然因素中,绿度、湿度、热度、干度可谓是与人类生存息息相关的4个重要指标,也是人类直观…...
蓝桥杯刷题--宝石组合
在一个神秘的森林里,住着一个小精灵名叫小蓝。有一天,他偶然发现了一个隐藏在树洞里的宝藏,里面装满了闪烁着美丽光芒的宝石。这些宝石都有着不同的颜色和形状,但最引人注目的是它们各自独特的 “闪亮度” 属性。每颗宝石都有一个…...
记录一下学习docker的命令(不断补充中)
#2025-04-10,22:12############### 在wsl2中安装了ubuntu24.04.1后有部署了docker, 如果没有启动docker可以通过下列命令启动docker: sudo systemctl start docker 执行下列命令可以看到docker状态,并不占用控制台的命令: su…...
沃伦森电机状态传感器RS-MTS01:智能运维的解决方案
行业工况背景 一、方案背景 在现代工业生产中,电机发挥着至关重要的作用,其运行状况直接关联到生产效率、产品质量以及成本控制。传统的电机维护主要依赖于定期的巡检和事后维修,这种方式难以提前发现潜在的故障隐患,容易导致意外…...
设计模式:单例模式
复习一下: 单例模式(Singleton Pattern) 原理: 单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。它通过将类的构造函数设为私有,防止外部代码直接实例化该类。同时,提供…...
电商素材革命:影刀RPA魔法指令3.0驱动批量去水印,实现秒级素材净化
本文 去除水印实操视频展示电商图片水印处理的困境影刀 RPA 魔法指令 3.0 强势登场利用魔法指令3.0两步实现去除水印操作关于影刀RPA 去除水印实操视频展示 我们这里选择了4张小红书里面比较帅气的图片,但凡用过小红书的都知道,小红书右下角是会有小…...
解析 WebSocket 协议的基本原理
随着互联网的快速发展,Web 应用对实时通信的需求越来越高。传统的 HTTP 协议无法满足实时性的要求,而 WebSocket 协议则应运而生。WebSocket 是一种新型的协议,允许在一个单独的持久连接上进行全双工的通信,提供了更高效、实时的数…...
学生管理系统(Python)
运行结果: 源代码: """ 项目:类似于学生管理系统---增删改查 """ #封装一个学生类 import random class Student: def __init__(self,stuid,name,score): self.stuid stuid self.name name self.score …...