Shell 学习笔记 - 变量的删除、替换和替代 + 变量中的特殊符号

1.9 Shell 变量的删除、替换和替代

Linux 提供一些可以直接对变量进行操作的符号。通过这些符号,变量中的部分内容可以被删除、替换和替代。在 Shell 中,变量的删除、替换和替代也是非常重要的。通过简单操作修改变量,可以减少代码的行数并提高可读性。

1.9.1 Shell 变量的删除

变量删除的操作方法如下:

格式说明
${变量名#*关键字符}如果变量内容从头开始的数据符合 关键字符 ,则将符合的最短数据删除
${变量名##*关键字符}如果变量内容从头开始的数据符合 关键字符 ,则将符合的最长数据删除
${变量名%关键字符*}如果变量内容从尾开始的数据符合 关键字符 ,则将符合的最短数据删除
${变量名%%关键字符*}如果变量内容从尾开始的数据符合 关键字符 ,则将符合的最长数据删除

示例代码如下:

#!/bin/bash# 定义一个示例字符串
str="hello_world_hello_world"# 删除变量内容中从头开始的最短匹配的 'o',结果为 'hell_world_hello_world'
echo "${str#*o}"# 删除变量内容中从头开始的最长匹配的 'o',结果为 '_world_hello_world'
echo "${str##*o}"# 删除变量内容中从尾开始的最短匹配的 'o',结果为 'hello_world_hello_w'
echo "${str%o*}"# 删除变量内容中从尾开始的最长匹配的 'o',结果为 'hello_world_hello_w'
echo "${str%%o*}"

1.9.2 Shell 变量的替换

在日常工作中,常常需要判断某个变量是否存在。若变量存在则使用既有的配置,若变量不存在,则给予一个常用的配置。

变量替换的操作方式如下:

格式说明
${变量名/旧字符串/新字符串}若变量内容符合 旧字符串,则第一个 旧字符串 会被 新字符串 替换
${变量名//旧字符串/新字符串}若变量内容符合 旧字符串,则全部 旧字符串 会被 新字符串 替换

示例代码如下:

#!/bin/bash# 定义一个示例字符串
str="hello_world_hello_world"# 替换所有的 'o' 为 'x',结果为 'hellx_wxrld_hellx_wxrld'
echo "${str//o/x}"# 替换第一个 'o' 为 'x',结果为 'hellx_world_hello_world'
echo "${str/o/x}"

1.9.3 Shell 变量的自增

Shell 变量的自增运算符是 i++++i

  • i++ 表示先赋值再自加
  • ++i 表示先自加再赋值
#!/bin/bash# 定义一个示例变量
i=0# i++ 表示先赋值再自加,所以此时 i 的值为 0,输出 0
echo "i++ returns $((i++))"
# 输出结果为 0# 输出此时 i 的值为 1
echo "After i++, i is $i"
# 输出结果为 1# 重置示例变量
i=0# ++i 表示先自加再赋值,所以此时 i 的值为 1,输出 1
echo "++i returns $((++i))"
# 输出结果为 1# 输出此时 i 的值为 1
echo "After ++i, i is $i"
# 输出结果为 1

1.10 Shell 变量中的特殊符号

在Shell脚本中,有许多特殊符号用于不同的操作和功能。以下是一些常见的Shell变量中的特殊符号及其用途:

基本符号

  • $:用于引用变量。例如,$VAR表示变量VAR的值。
  • ${}:用于引用变量,尤其是在变量名后面紧跟非变量名字符时。例如,${VAR}123表示变量VAR的值加上字符串123

特殊变量

  • $0:当前脚本的名称。
  • $1$9:传递给脚本或函数的参数。$1 是第一个参数,$2 是第二个参数,依此类推。
  • $#:传递给脚本或函数的参数个数。
  • $*:传递给脚本或函数的所有参数,作为一个字符串。
  • "$@":传递给脚本或函数的所有参数,每个参数保持独立。
  • $?:最近一次命令的退出状态,0表示成功,非0表示失败。
  • $$:当前Shell进程的进程ID(PID)。
  • $_:最后一个命令的最后一个参数或最后一个命令的结果。

控制字符

  • ;:命令分隔符,用于在一行中执行多个命令。
  • &&:逻辑AND,用于连接两个命令,第一个命令成功时才执行第二个命令。
  • ||:逻辑OR,用于连接两个命令,第一个命令失败时才执行第二个命令。
  • &:将命令放入后台执行。
  • |:管道符,用于将一个命令的输出作为下一个命令的输入。

引号

  • ":双引号,引用字符串,可以包含变量和命令替换。
  • ':单引号,引用字符串,原样输出其中内容,不进行变量和命令替换。
  • `:反引号,用于命令替换,执行命令并将结果替换到当前位置。例如,`date`

重定向

  • >:输出重定向,将命令输出写入文件(覆盖)。
  • >>:输出重定向,将命令输出追加到文件末尾。
  • <:输入重定向,从文件读取命令输入。
  • 2>:错误输出重定向,将错误输出写入文件(覆盖)。
  • 2>>:错误输出重定向,将错误输出追加到文件末尾。
  • &>:将标准输出和错误输出都重定向到同一文件中。

括号

  • ():命令组,将一组命令放在子Shell中执行。
  • {}:命令块,在当前Shell中执行一组命令。

其他

  • *:通配符,匹配零个或多个字符。
  • ?:通配符,匹配单个字符。
  • [ ]:字符集,匹配方括号内的任意一个字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/854810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker怎么拉取全部镜像,打包所有镜像

因为docker&#xff0c;所以我把电脑上之前的镜像全部打包出来了 你们也可以打包&#xff0c;我提供一个脚本&#xff0c;你运行即可 export_docker.sh #!/bin/bash# 导出目录 EXPORT_DIR"docker_images_backup" mkdir -p "$EXPORT_DIR"# 获取所有镜像 …

编程第一课名字怎么写:创意、吸引力与实用性的完美结合

编程第一课名字怎么写&#xff1a;创意、吸引力与实用性的完美结合 在编程教育的世界里&#xff0c;为第一课起一个引人入胜的名字至关重要。这个名字不仅要能够吸引学生的注意&#xff0c;还要能够准确地传达课程的核心内容和价值。那么&#xff0c;如何为编程第一课起一个既…

PythonPoc基础编写(3)---批量刷cnvd

文章目录 前言一、发现过程二、使用步骤1.引入库2.读入数据结果 总结 前言 想刷cnvd&#xff1f;最重要的是登录进行测试功能点 一、发现过程 找到一个网站 发现登录失败返回200 登录成功则是重定向 302 那就写一个脚本吧 二、使用步骤 1.引入库 import requests 2.读入…

Docker容器技术在Linux平台的应用与实践

Docker容器技术自推出以来&#xff0c;迅速成为Linux平台上应用部署和微服务架构的首选方案&#xff0c;它通过轻量级的隔离机制&#xff0c;实现了应用程序及其依赖环境的一致性部署与管理。以下是Docker容器技术在Linux平台上的主要应用与实践领域&#xff1a; 1. 应用快速部…

Web Works API 和 Promise 的对比和区别

Web Workers 和 Promise 都是强大的工具&#xff0c;用于不同的异步处理场景。Web Workers 适用于需要并行处理的复杂任务&#xff0c;通过后台线程避免阻塞主线程。而 Promise 则简化了单线程中的异步操作管理&#xff0c;使代码更加清晰和结构化。根据具体需求选择合适的技术…

安装AutoCAD异常

问题&#xff1a; 安装Autodesk产品时&#xff0c;显示以下消息&#xff0c;且安装未完成。 正在等待操作系统重新启动。 请重新启动计算机以安装 AutoCAD 2024。 操作系统&#xff1a; Windows 10Windows 11 原因&#xff1a; Windows注册表项已损坏。Microsoft Visual C …

生产环境下部署微调的10条戒律

关于大模型微调部署,openPile,Kyle Corbitt的《Ten Commandments to Deploy Fine-Tuned Models inProd》:https://docs.google.com/presentation/d/1lRrTEDOw7160sU_-PL5bONLOPq_7E8alewvcJ01BCE/edit#slideid.g2721fb6713e_0_44 1、第一戒律:不可微调&#xff0c;直接使用提示…

CDN内容加速原理?

1.用户向浏览器提供要访问的域名 2.浏览器从本地host文件中解析域名,如何host文件没有做任何配置&#xff0c;则浏览器调用域名解析库对域名进行解析,析函数库一般得到的是该域名对应的CNAME记录,从中获取真正的IP地址,此过程中,根据地理位置信息解析对应的IP地址&#xff0c;…

微射流均质机可用于纳米制剂和材料制备 我国市场需求空间广阔

微射流均质机可用于纳米制剂和材料制备 我国市场需求空间广阔 微射流均质机是一种纳米级乳化及分散的处理设备&#xff0c;工作原理是在加压状态下&#xff0c;高压流体经过微细孔径喷嘴后&#xff0c;形成高速微射流&#xff0c;从而产生强大的涡流和切应力&#xff0c;将颗粒…

ESP8266-01S烧录MQTT固件ERROR问题

今天在烧录ESP8266固件时遇到了这个问题&#xff0c;技术客服给了个有效的解决方案。 选择固件的时候可以先确认自己的模块是ESP8266或者EPS8285主控&#xff0c;这在选择DOWNLOADTOOL时还不一样。 然后波特率是115200&#xff0c;我在这个地方选错成1152000。 当然上面都不…

PHP 日期处理完全指南

PHP 日期处理完全指南 引言 在PHP开发中,日期和时间处理是一个常见且重要的任务。PHP提供了丰富的内置函数来处理日期和时间,包括日期的格式化、计算、解析等。本文将详细介绍PHP中日期处理的相关知识,帮助读者全面理解和掌握这一技能。 1. PHP日期函数基础 1.1 date()函…

【ARM Cache 及 MMU 系列文章 1.4 -- 如何判断 L3 Cache 是否实现?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cluster Configuration Register代码实现什么是Single-Threaded Core?什么是PE(Processor Execution units)?Single-Threaded Core与PE的关系对比多线程(Multithreading)Cluster…

LeetCode-day15-522. 最长特殊序列 II

LeetCode-day15-522. 最长特殊序列 II 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给定字符串列表 strs &#xff0c;返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在&#xff0c;返回 -1 。 特殊序列 定义如下&#xff1a;该序列为某字符串…

用java 做一个模拟的菜单及对话框测试

首先我们要创建一个Menu 的java类 然后接着给上代码 代码如下&#xff1a; package test01;import javax.swing.*;public class Menu extends JFrame{JMenuBar jmb;JMenu jmfile,jmedit,jmhelp;JMenuItem jminew,jmiopen,jmisave,jmisaveas,jmiexit,jmicut,jmicopy,jmipast…

gridview自带编辑功能如何判断用户修改的值的合法性

在使用GridView的编辑功能更新值时&#xff0c;确保输入的值合法性是十分重要的。为了实现这一点&#xff0c;你可以在GridView的RowUpdating事件中加入代码来检查用户输入的值。如果发现输入的值不合法&#xff0c;你可以取消更新操作并向用户显示错误消息。下面是如何实现的步…

小区噪音监测管理系统设计

一、引言 随着城市化进程的加快&#xff0c;小区居民对于居住环境的要求日益提高。其中&#xff0c;噪音污染已成为影响居民生活质量的重要因素。因此&#xff0c;设计一套小区噪音监测管理系统&#xff0c;对于提升居民的生活品质和小区管理效率具有重要意义。本文将详细阐述…

一五二、go缓存GCache和Go-Redis

GCache 和 Go-Redis 都是 Go 语言中常用的缓存解决方案&#xff0c;但它们适用于不同的场景。以下是它们各自的特点和适用场景。 GCache GCache 是一个内存缓存库&#xff0c;主要用于在单个应用程序实例中缓存数据。它具有以下特点&#xff1a; 本地缓存&#xff1a;缓存数…

React useReducer 使用及 useImmerReducer

useReducer 实际上是以数组上的 reduce() 方法命名的。 传递给 reduce 的函数被称为 “reducer”。它接受 目前的结果 和 当前的值&#xff0c;然后返回 下一个结果。 React 中的 reducer 和这个是一样的&#xff1a;它们都接受 目前的状态 和 action &#xff0c;然后返回 下一…

数据资产驱动的智能化决策:深度剖析数据资产在提升企业决策效率与准确性中的关键作用

在数字化、信息化日益普及的今天&#xff0c;数据已经成为企业发展的重要资产。数据资产不仅能够帮助企业更好地了解市场需求、优化业务流程&#xff0c;还能在决策过程中提供科学、精准的支持。本文将深入剖析数据资产在提升企业决策效率与准确性中的关键作用&#xff0c;探讨…

【镜像制作】docker命令的参数解释及用法

文章目录 简介一.docker参数详解1.1 用法&#xff1a;docker[OPTIONS]COMMAND1.2 管理命令&#xff1a;1.3 Swarm命令&#xff1a;1.4 命令&#xff1a;1.5全局选项&#xff1a; 二.容器操作相关2.1.查看容器列表2.2.启动容器2.3.停止容器2.4.强制停止容器2.5.重启容器2.6.查看…