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

[Shell] ${} 的多种用法

文章目录

  • 解释
  • 代码

解释

在Shell脚本中,${} 是一种变量替换语法。它用于获取和操作变量的值。

具体来说,${} 可以用来执行以下操作:

  1. 变量引用:${variable} 表示引用变量 variable 的值。

  2. 变量默认值:${variable:-default_value} 表示如果变量 variable 为空或未设置,则使用 default_value 作为其值。

  3. 变量存在性检查:${variable:+value_if_exists} 表示如果变量 variable 存在且非空,则使用 value_if_exists 作为其值。

  4. 变量长度获取:${#variable} 表示获取变量 variable 的长度。

  5. 字符串截取:${variable:start:length} 表示从变量 variable 的 start 位置开始截取长度为 length 的子字符串。

  6. 字符串替换:${variable/pattern/replacement} 表示将变量 variable 中匹配 pattern 的部分替换为 replacement。


代码

#!/bin/bash# 变量引用示例
name="Alice"
echo "Hello, ${name}!"  
# 输出:Hello, Alice!# 变量默认值示例
unset age
default_age=18
echo "Age: ${age:-$default_age}"  
# 输出:Age: 18,因为变量 age 未设置,默认使用 $default_age 的值# 变量存在性检查示例
name="Bob"
echo "Welcome, ${name:+$name}"  
# 输出:Welcome, Bob,因为变量 name 存在且非空# 变量长度获取示例
message="Hello, World!"
echo "Message length: ${#message}"  
# 输出:Message length: 13# 字符串截取示例
string="abcdefg"
echo "Substring: ${string:1:3}"  
# 输出:Substring: bcd,从位置 1 开始截取长度为 3 的子字符串# 字符串替换示例
string="Hello, world!"
echo "Replace: ${string/world/China}"  
# 输出:Replace: Hello, China!,将字符串中的 "world" 替换为 "China"

相关文章:

[Shell] ${} 的多种用法

文章目录 解释代码 解释 在Shell脚本中,${} 是一种变量替换语法。它用于获取和操作变量的值。 具体来说,${} 可以用来执行以下操作: 变量引用:${variable} 表示引用变量 variable 的值。 变量默认值:${variable:-de…...

基于SpringBoot的社区医院管理系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 用户信息管理 病例信息管理 家庭医生管理 药品信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的…...

Spring的执行流程与Bean的生命周期

目录 一、Spring的执行流程(生命周期) 二、Bean的生命周期 一、Spring的执行流程(生命周期) 首先在Spring的执行过程中会先启动容器,这里是将配置文件进行加载。根据配置文件完成Bean的实例化,比如是配置的…...

使用 SQL 的方式查询消息队列数据以及踩坑指南

背景 为了让业务团队可以更好的跟踪自己消息的生产和消费状态,需要一个类似于表格视图的消息列表,用户可以直观的看到发送的消息;同时点击详情后也能查到消息的整个轨迹。 消息列表 点击详情后查看轨迹 原理介绍 由于 Pulsar 并没有关系型数…...

拿下国家级信创认证 中科驭数KPU SWIFT-2200N成为国内首款满足金融业严苛要求的DPU产品

近日,中科驭数KPU SWIFT-2200N低时延DPU卡,在中国人民银行旗下金融信创生态实验室完成测试并取得测试报告,这意味着中科驭数低时延网络代表性产品的应用领域从证券进一步拓展到了银行业,成为国内首款满足金融行业严苛要求的DPU产品…...

centos怎么禁用和关闭selinux

要禁用和关闭SELinux(Security-Enhanced Linux)在CentOS上,请按照以下步骤进行: 请注意:禁用SELinux会减少系统的安全性,因此只有在确切知道自己在做什么并且出于特定目的时才应该这样做。 1.打开终端并以超级用户(root)身份登录&…...

【LeetCode刷题日志】88.合并两个有序数组

🎈个人主页:库库的里昂 🎐C/C领域新星创作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:LeetCode 刷题日志🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,…...

计算机考研 | 2013年 | 计算机组成原理真题

文章目录 【计算机组成原理2013年真题43题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题44题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题43题-9分】 某32位计算机&a…...

[Unity][VR]透视开发系列4-解决只看得到Passthrough但看不到Unity对象的问题

【视频资源】 视频讲解地址请关注我的B站。 专栏后期会有一些不公开的高阶实战内容或是更细节的指导内容。 B站地址: https://www.bilibili.com/video/BV1Zg4y1w7fZ/ 我还有一些免费和收费课程在网易云课堂(大徐VR课堂): https://study.163.com/provider/480000002282025/…...

电气工程 自动化 机械工科学生来看看

PLC 类 基于PLC的机械手控制系统设计 基于PLC的机械手控制系统设计 PLC与变频器在综采设备上的应用 PLC与步进电机的运动控制编程9000 PLC应用数字电子钟设计 三菱FX系列PLC与三菱变频器通讯应用实例 基于plc拉杆箱振动与噪音检测平台设计 基于PLC的船舶空压机控制系统设计 基…...

NewStarCTF2023week4-midsql(利用二分查找实现时间盲注攻击)

大致测试一下,发现空格被过滤了 使用内联注释/**/绕过,可行 1/**/-- 使用%a0替代空格,也可以 1%a0-- 再次测试发现等号也被过滤,我们使用 like 代替 (我最开始以为是and被过滤,并没有,如果是…...

null,undefined的区别?

在 JavaScript 中,null 和 undefined 都表示没有值或缺失值的状态,但它们之间有一些区别。 null: null 是一个表示空值的特殊关键字。它是一个表示变量未赋值的值,可以将其赋给任何变量,表示该变量为空。使用 null 可以明确地将一个变量设置为空。 示例: let myVaria…...

2.flink编码第一步(maven工程创建)

概述 万里第一步,要进行flink代码开发,第一步先整个 flink 代码工程 flink相关文章链接 flink官方文档 两种方式 一种命令行 mvn 创建,另一种直接在 idea 中创建一个工程,使用 mvn 的一些配置 mvn命令行创建 mvn 创建flink工程&…...

Unit1_1:分治问题之时间复杂度求解

文章目录 背景递归树法案例一案例二局限性 代入法/替代法主方法(重点) 背景 当碰到形如 T ( n ) a T ( ⌈ n b ⌉ ) O ( n d ) T(n)aT(\lceil \frac{n}{b} \rceil)O(n^d) T(n)aT(⌈bn​⌉)O(nd)的递推式,本质上就是将问题转化为规模更小的…...

React hooks的闭包陷阱

react hooks 陷阱 hooks必须放在函数顶层&#xff0c; 不能在条件分支和方法内 1、useState陷阱 异步陷阱 function Index() {const [count, setCount] useState(0)function add(){setCount( count 1 )console.log(count); // 0}return (<div><span>{count}…...

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法&#xff0c;全称为高级加密标准&#xff08;Advanced Encryption Standard&#xff09;。它是一种分组密码&#xff0c;以128比特为一个分组进行加密&#xff0c;其密钥长度可以是128比特、192比特或256比特&#xff0c;因此可以提供不同等级的安全性…...

一文详解防御DDoS攻击的几大有效办法

伴随互联网的飞速发展&#xff0c;网络安全问题变得越来越突出&#xff0c;其中最常见的就是DDoS攻击&#xff0c;也就是分布式拒绝服务攻击。DDoS攻击者利用计算机或其他设备的协作&#xff0c;以发送大量请求的方式导致目标超负荷&#xff0c;导致不能正常运转或“宕机”。以…...

Python二级 每周练习题24

练习一: 体重比较器 要求: 请编程实现如下功能: (1)程序开始运行时&#xff0c;提醒用户输入三个人的名字和体重 (可以分开输入&#xff0c;每次输入名字或者体重) (2) 程序自动比较&#xff0c;找出最重的一个人的名字和体重输出 的格式不限&#xff0c;但是要有最重人的姓名…...

MySQL - Buffer Pool

Buffer Pool 主要用于缓存数据库表的数据页&#xff0c;以提高数据库的读取性能&#xff1a; 缓存数据页&#xff1a;Buffer Pool 是 MySQL 中用于缓存数据页的内存区域。数据页通常包含数据库表的数据&#xff0c;如行记录等。当查询或读取数据时&#xff0c;MySQL会首先查看…...

c++ 拆分函数返回值和参数类型

在c中&#xff0c;函数参数类型和返回值类型通常是一个比较明确的信息&#xff0c;好像确实无需在这个上面费周折。然而&#xff0c;硬编码数据类型会让代码复用性下降&#xff0c;如果能够通过某种方式自动获取函数参数和返回值类型&#xff0c;对于代码的可复用性&#xff0c…...

PromptTemplate和ChatPromptTemplate的区别是什么呢?

我用最简单、最直白、一看就懂的方式给你讲清楚&#xff1a; PromptTemplate 和 ChatPromptTemplate 的真正区别 一句话总结 PromptTemplate 生成一段普通字符串 给补全模型/简单模型用ChatPromptTemplate 生成一整段聊天对话格式 给**聊天模型&#xff08;ChatGLM、Qwen、GP…...

LeetCode 2946. 循环移位后的矩阵相似检查【数学周期性+原地比较】简单

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

开源大模型落地趋势一文详解:Youtu-2B轻量化实践

开源大模型落地趋势一文详解&#xff1a;Youtu-2B轻量化实践 最近和不少做AI应用的朋友聊天&#xff0c;大家普遍有个感受&#xff1a;大模型是好&#xff0c;但用起来太“重”了。动辄几十上百G的模型&#xff0c;对算力要求高&#xff0c;部署成本也大&#xff0c;很多中小团…...

WSABuilds旧版本归档:如何获取v2311及更早版本安装包

WSABuilds旧版本归档&#xff1a;如何获取v2311及更早版本安装包 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solu…...

如何快速实现Font Awesome图标字体文件格式转换:终极在线工具指南

如何快速实现Font Awesome图标字体文件格式转换&#xff1a;终极在线工具指南 【免费下载链接】Font-Awesome The iconic SVG, font, and CSS toolkit 项目地址: https://gitcode.com/GitHub_Trending/fo/Font-Awesome Font Awesome作为一款标志性的SVG、字体和CSS工具包…...

腾讯王者荣耀强化学习环境:打造专业AI训练平台的完整指南

腾讯王者荣耀强化学习环境&#xff1a;打造专业AI训练平台的完整指南 【免费下载链接】hok_env Honor of Kings AI Open Environment of Tencent 项目地址: https://gitcode.com/gh_mirrors/ho/hok_env 在人工智能研究领域&#xff0c;游戏环境一直是强化学习算法的理想…...

别再被‘小样本’难倒了!用Python的PyMC3库实战层次贝叶斯模型

用PyMC3解锁小样本分析&#xff1a;层次贝叶斯建模实战指南 当你的数据集像便利店冰柜里的酸奶——每个品类只有零星几瓶时&#xff0c;传统统计方法往往会束手无策。想象你正分析20个城市的新开门店周销售额&#xff0c;每个城市却只有3-5条数据记录。这时&#xff0c;层次贝叶…...

Vue 3 Teleport:打破 DOM 层级的“传送门”

Vue 3 Teleport&#xff1a;打破 DOM 层级的“传送门” 在现代前端开发中&#xff0c;组件化是构建复杂用户界面的基石。我们习惯于将 UI 拆分成一颗颗独立的组件&#xff0c;像搭积木一样组合成完整的页面。然而&#xff0c;这种嵌套结构在带来逻辑内聚性的同时&#xff0c;也…...

VBench评测基准全面解析:如何精准评估视频生成模型性能

1. VBench评测基准&#xff1a;视频生成模型的"体检中心" 想象一下你去医院做全身体检&#xff0c;医生会用不同仪器检查你的视力、听力、心肺功能等各项指标。VBench就是给视频生成模型做全面体检的"三甲医院"&#xff0c;它能从16个维度给模型打分&#…...

EmbeddingGemma-300m在Mathtype公式的语义理解中的应用

EmbeddingGemma-300m在Mathtype公式的语义理解中的应用 1. 引言 数学公式的语义理解一直是自然语言处理领域的挑战性任务。传统的文本嵌入模型在处理复杂的数学表达式时往往力不从心&#xff0c;无法准确捕捉公式背后的数学含义和逻辑关系。EmbeddingGemma-300m作为Google最新…...