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

Shell变量的高级用法

        在Shell编程中,变量的使用是至关重要的。初学者可能只使用最基本的变量赋值和调用,但Shell变量实际上有很多高级用法,可以极大地提升脚本的灵活性和效率。本文将介绍几种Shell变量的高级用法,帮助您更好地利用Shell脚本。

1. 参数扩展

参数扩展是一种用于获取变量值的不同形式或修改变量值的方法。常见的参数扩展操作有:

默认值

        如果变量未定义或为空,可以提供默认值。

echo ${variable:-default_value}

        如果variable未定义或为空,则输出default_value

赋值默认值

        与上面类似,但会将默认值赋给变量。

echo ${variable:=default_value}

        如果variable未定义或为空,则将其赋值为default_value并输出。

错误处理

        如果变量未定义或为空,输出错误消息并退出脚本。

echo ${variable:?error_message}

        如果variable未定义或为空,输出error_message并退出。

替换值

        如果变量已定义且不为空,则替换为指定值。

echo ${variable:+alternate_value}

        如果variable已定义且不为空,则输出alternate_value

2. 字符串操作

Shell变量支持多种字符串操作,如截取、替换和删除等。

截取字符串

str="hello world"
echo ${str:6}      # 输出 "world"
echo ${str:0:5}    # 输出 "hello"

字符串长度

str="hello"
echo ${#str}       # 输出 5

子串替换

str="hello world"
echo ${str/world/universe}  # 输出 "hello universe"

3. 模式匹配

模式匹配是一种强大的字符串操作方式,允许对字符串进行删除和替换。模式匹配包括四种形式:

从开头删除最短匹配字符串

str="hello world"
echo ${str#*o}     # 输出 " world" (删除最短匹配 "o" 及其左侧部分)

从开头删除最长匹配字符串

str="hello world"
echo ${str##*o}    # 输出 "rld" (删除最长匹配 "o" 及其左侧部分)

从结尾删除最短匹配字符串

str="hello world"
echo ${str%o*}     # 输出 "hell" (删除最短匹配 "o" 及其右侧部分)

从结尾删除最长匹配字符串

str="hello world"
echo ${str%%o*}    # 输出 "h" (删除最长匹配 "o" 及其右侧部分)

4. 引用和间接引用

间接引用允许使用变量的值作为另一个变量的名称来访问其值。

简单引用

var1="hello"
var2="var1"
echo ${!var2}   # 输出 "hello"

数组引用

array1=(1 2 3)
array2="array1"
echo ${!array2[@]}   # 输出数组 "array1" 的所有元素

        熟练掌握Shell变量的高级用法,可以让您的脚本更加高效、灵活和强大。无论是参数扩展、字符串操作、模式匹配还是环境变量的使用,这些高级技巧都能极大地提升您的Shell编程能力。通过不断实践和应用,您将能够编写出更复杂和功能强大的Shell脚本。

相关文章:

Shell变量的高级用法

在Shell编程中,变量的使用是至关重要的。初学者可能只使用最基本的变量赋值和调用,但Shell变量实际上有很多高级用法,可以极大地提升脚本的灵活性和效率。本文将介绍几种Shell变量的高级用法,帮助您更好地利用Shell脚本。 1. 参数…...

【Python/Pytorch - 网络模型】-- SVD算法

文章目录 文章目录 00 写在前面01 基于Pytorch版本的SVD算代码02 理论知识 00 写在前面 (1)矩阵的奇异值分解在最优化问题、特征值问题、最小二乘方问题、广义逆矩阵问题及统计学等方面都有重要应用; (2)应用&#…...

全光万兆时代来临:信而泰如何推动F5G-A(50PONFTTR)技术发展

技术背景 F5G-A(Fifth Generation Fixed Network-Advanced,第五代固定网络接入)是固定网络技术的一次重大升级,代表了光纤网络技术的最新发展。F5G-A旨在提供更高的带宽、更低的延迟、更可靠的连接以及更广泛的应用场景。 F5G-A六…...

港科夜闻 | 香港科大与香港科大(广州)合推红鸟跨校园学习计划,共享教学资源,促进港穗学生交流学习...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与香港科大(广州)合推“红鸟跨校园学习计划”,共享教学资源,促进港穗学生交流学习。香港科大与香港科大(广州)6月14日共同宣布推出“红鸟跨校园学习计划”,以进一步加强两校学…...

基于Wireshark实现对FTP的抓包分析

基于Wireshark实现对FTP的抓包分析 前言一、虚拟机Win10环境配置二、FileZilla客户端的安装配置下载FileZilla客户端安装FileZilla 三、FileZilla Server安装下载FileZilla Server安装 四、实现对FTP的抓包前置工作实现抓包完成抓包 前言 推荐一个网站给想要了解或者学习人工智…...

Vue54-浏览器的本地存储webStorage

一、本地存储localStorage的作用 二、本地存储的代码实现 2-1、存储数据 注意: localStorage是window上的函数,所以,可以把window.localStorage直接写成localStorage(直接调用!) 默认调了p.toString()方…...

Linux下Shell脚本基础知识

主要参考视频: 这可能是B站讲的最好的Linux Shell脚本教程,3h打通Linux-shell全套教程,从入门到精通完整版_哔哩哔哩_bilibili 主要参考文档: Shell 教程 | 菜鸟教程 (runoob.com) Bash Shell教程 (yiibai.com) 先用视频入门&…...

爬虫初学篇——看完这些还怕自己入门不了?

初次学习爬虫,知识笔记小分享 学scrapy框架可看:孤寒者博主的【Python爬虫必备—>Scrapy框架快速入门篇——上】 目录🌟 一、🍉基础知识二、🍉http协议:三、🍉解析网页(1) xpath的用…...

[数据集][目标检测]减速区域检测数据集VOC+YOLO格式1654张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1654 标注数量(xml文件个数):1654 标注数量(txt文件个数):1654 标注…...

OpenGL3.3_C++_Windows(8)

材质&&漫反射,光照贴图 使用struct为材质建立结构体,以便方便管理漫反射贴图是物体的颜色值(纹理)(通过 UV 坐标映射到渲染物体的表面),材质是物体的属性(物体对光的交互&a…...

GPU的工作原理

location: Beijing 1. why is GPU CPU的存储单元和计算单元的互通过慢直接促进了GPU的发展 先介绍一个概念:FLOPS(Floating Point Operations Per Second,浮点运算每秒)是一个衡量其执行浮点运算的能力,可以作为计算…...

Linux常⽤服务器构建-samba

目录 1. 介绍 2. 安装 3. 配置 3.1 创建存放共享⽂件的路径 3.2 创建samba账户 4 重启samba 5. 访问共享⽂件 5.1 mac下访问⽅式 5.2 windows下访问⽅式 1. 介绍 Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的⼀个免费软件,能够完成在 windows 、 mac 操作系统…...

【Java】已解决java.lang.UnsupportedOperationException异常

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 已解决java.lang.UnsupportedOperationException异常 在Java编程中,java.lang.UnsupportedOperationException是一个运行时异常,通常表示尝试执行一个不支持的操作。这种异常经常发生…...

在ubuntu中恢复误删除的文件

1、安装 TestDisk 在 Ubuntu 上,可以使用以下命令安装 TestDisk: sudo apt-get install testdisk2、查询你删除的文件所在那个分区 #查询分区 df -h #我这里是/dev/sda2 #也可以使用下面命令查看具体哪个分区 lsblk3、查询该分区是什么系统类型 sudo …...

Sklearn中逻辑回归建模

分类模型的评估 回归模型的评估方法,主要有均方误差MSE,R方得分等指标,在分类模型中,我们主要应用的是准确率这个评估指标,除此之外,常用的二分类模型的模型评估指标还有召回率(Recall&#xff…...

【ARM】MDK出现报错error: A\L3903U的解决方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决MDK出现报错error: A\L3903U这样类型的报错 2、 问题场景 电脑或者软件因为意外情况导致崩溃,无法正常关闭,强制电脑重启之后,打开工程去编译出现下面的报错信息(…...

0018__字体的kerning是什么意思

泰山OFFICE技术讲座:字体的kerning是什么意思-CSDN博客 了解CSS属性font-kerning,font-smoothing,font-variant-CSDN博客...

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

文章汇总 总体来看像是一种带权重的残差,但解决的如何高效问题的事情。 相比模型的全微调,作者提出固定预训练模型参数不变,在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数,用以模拟参数的变化量。 模型架构 h W 0 x △…...

cmake、make、makefile、ninga的关系

CMake是一种跨平台的构建系统,它用来管理软件的编译过程。CMake可以生成本地平台特定的构建文件,例如Makefile或者Microsoft Visual Studio项目文件,以便开发人员更轻松地在不同的平台上构建他们的项目。它的主要功能是配置和生成构建脚本&am…...

StarRocks详解

什么是StarRocks? StarRocks是新一代极速全场景MPP数据库(高并发数据库)。 StarRocks充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果。 1.可以在Spark和Flink里面处理数据,然后将处理完的数据写到StarRo…...

照着用就行:全学科适配的降AIGC工具 千笔·专业降AI率智能体 VS PaperRed 一站式解决降重难题

随着AI技术的迅猛发展,学术写作中对AI生成内容的识别能力也在不断提升,许多学生和研究者发现,原本依赖AI辅助撰写的论文,如今在查重系统中频频被标记出高AIGC率,甚至影响最终成绩。这种现象不仅让许多人措手不及&#…...

【2026 最新】 MySQL 数据库安装教程(超详细图文版-纯享版)小白也可以安装成功!

一、前言 MySQL 作为开源关系型数据库的标杆,广泛应用于 Web 开发、数据分析等场景,是程序员必备的基础工具之一。很多新手安装MySQL时都会陷入“版本选择困难症”——版本太高怕兼容出问题,版本太低又缺功能、不支持主流框架,甚…...

飞书机器人深度集成:OpenClaw+Qwen3-32B-Chat智能问答系统搭建

飞书机器人深度集成:OpenClawQwen3-32B-Chat智能问答系统搭建 1. 项目背景与需求拆解 去年底接手了一个技术团队的知识库建设项目,需要为百人规模的研发团队搭建一个智能问答系统。核心诉求是:通过飞书机器人接口,让成员能快速查…...

Go语言HTTP服务开发:从标准库到框架

Go语言HTTP服务开发:从标准库到框架 作为一个写了十几年代码的Go后端老兵,我在HTTP服务开发上踩过不少坑。今天就来分享一下Go语言HTTP服务开发的实践经验,从标准库到框架。 一、标准库net/http 1. 基本用法 package mainimport ("fmt&q…...

Flink CDC实战:如何解决Oracle LogMiner每小时60G日志下的性能瓶颈与延迟问题

Flink CDC实战:突破Oracle LogMiner高负载场景的性能优化全攻略 当Oracle数据库每小时产生60GB归档日志时,传统单线程LogMiner解析方案往往陷入性能泥潭。本文将揭示一套经过生产验证的并发LogMiner解析架构,通过智能SCN切分、动态线程池和Re…...

NumPy:数组复制与视图

在使用 NumPy 进行数据处理时,数组对象不仅可以被读取或修改,还经常需要在不同变量或不同数组之间进行“复制”。例如:将一个数组赋值给另一个变量、通过切片获取数组的一部分、或显式创建新的数组副本。需要注意的是,这些操作在语…...

Superpowers 系统学习笔记:AI编程Agent的完整开发方法论

Superpowers 系统学习笔记:AI编程Agent的完整开发方法论 声明: 📝 作者:甜城瑞庄的核桃(ZMJ) 原创学习笔记,欢迎分享,但请保留作者信息及原文链接哦~ 项目地址:https://github.com/obra/superpowers Star数:36.6K+(持续增长中) 工具作者:Jesse Vincent (@obra) …...

MogFace人脸检测惊艳效果:CVPR22模型在极端光照(强逆光/频闪光)下的人脸召回提升实测

MogFace人脸检测惊艳效果:CVPR22模型在极端光照(强逆光/频闪光)下的人脸召回提升实测 你有没有遇到过这样的场景?在逆光下拍的照片,人脸黑成一团,或者是在闪烁的灯光下,人脸忽明忽暗&#xff0…...

Windows平台Docker部署Home Assistant全攻略:从零配置到智能家居控制

1. 环境准备与Docker安装 想在Windows上玩转智能家居中枢?DockerHome Assistant组合绝对是新手友好方案。我去年给父母家改造智能家居时就用的这套方案,实测稳定运行一年多没出过问题。先说说基础环境搭建,这里会手把手带你避开我踩过的坑。 …...

RWKV7-1.5B-g1a参数避坑:top_p=0.9在中文任务中易引发事实性错误实测

RWKV7-1.5B-g1a参数避坑:top_p0.9在中文任务中易引发事实性错误实测 1. 模型简介与测试背景 rwkv7-1.5B-g1a是基于RWKV-7架构的多语言文本生成模型,特别适合中文场景下的基础问答、文案续写和简短总结任务。作为一款轻量级模型,它能在单卡2…...