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

Shell条件变量替换

个人博客地址:Shell条件变量替换 | 一张假钞的真实世界

Bash Shell可以进行变量的条件替换,条件放在{}中,只有条件发生时才进行替换:

  • ${v1:-$v2}

当变量v1未定义或者值为空时,返回v2的值,否则返回v1的值。

  • ${v1:=$v2}

若变量v1未定义或者值为空时,在返回v2的值的同时将v2的值给v1。

  • ${v1:?message}

若变量已赋值的话,正常替换。否则将消息message送到标准错误输出(若此替换出现在Shell程序中,那么该程序将终止运行)。

  • ${v1:+$v2}

若变量已赋值的话,其值才用v2的值替换,否则不进行任何替换。

  • ${v1:offset}、${v1:offset:length}

从变量中提取子串,这里offset和length可以是算术表达式。

  • ${#v1}

变量的字符个数(变量的字符个数,并不是变量个数)。

  • ${v1#pattern}、${v1##pattern}

去掉v1中与pattern相匹配的部分,条件是v1的开头与pattern相匹配。#与##的区别在于一个是最短匹配模式,一个是最长匹配模式。

  • ${v1%pattern}、${v1%%pattern}

与上一条规则类似,只是从v1的尾部与pattern相匹配,%与%%的区别与#与##一样。

  • ${v1/pattern/string}、${v1//pattern/string}

进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区别与上同。

注意:上述条件变量替换中,除第2条外,其余均不影响变量本身的值。


http://www.kler.cn/a/533784.html

相关文章:

  • hot100(7)
  • Linux中安装rabbitMQ
  • 最大矩阵的和
  • 20250205——Windows系统基于ollama的DeepSeek-R1本地安装
  • 基于LabVIEW的Modbus-RTU设备通信失败问题分析与解决
  • PVE纵览-解锁 PVE 的潜力:配置显卡直通
  • PySpark学习笔记5-SparkSQL
  • 在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问
  • 记录debian12运行时出现卡死的问题
  • http状态码:请说说 503 Service Unavailable(服务不可用)的原因以及排查问题的思路
  • Windows Docker笔记-简介摘录
  • Java synchronized锁升级
  • 算法与数据结构(括号匹配问题)
  • w192中国陕西民俗网的设计与实现
  • 从BIO到NIO:Java IO的进化之路
  • deepseekLLM发展历程
  • ElasticSearch学习笔记-解析JSON格式的内容
  • 硬件工程师笔试基础题目
  • 数字化转型:概念性名词浅谈(第四讲)
  • DS图(下)(19)
  • 【算法】经典博弈论问题③——斐波那契博弈 + Zeckendorf 定理 python
  • 基于YUV的色相调节(一)
  • Leetcode 78. 子集(全排列的变形)
  • Gauss高斯:分布键
  • DeepSeek各版本说明与优缺点分析
  • 留学生编程辅导Haskell/OCaml/Prolog/Rust/Python