当前位置: 首页> 财经> 访谈 > Shell 学习笔记 - 变量的删除、替换和替代 + 变量中的特殊符号

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

时间:2025/7/12 19:26:33来源:https://blog.csdn.net/z339521/article/details/139744059 浏览次数:0次

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中执行一组命令。

其他

  • *:通配符,匹配零个或多个字符。
  • ?:通配符,匹配单个字符。
  • [ ]:字符集,匹配方括号内的任意一个字符。
关键字:Shell 学习笔记 - 变量的删除、替换和替代 + 变量中的特殊符号

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: