请稍侯

shell 脚本变量参数替换用法

04 September 2024

Shell 脚本变量参数替换用法

Shell 参数替换提供了一种灵活的方式来处理变量的值。这里是一些常用的参数替换用法:

1. 默认值

${VARIABLE:-default}
  • 如果 VARIABLE 没有被定义或为空,则返回 default
  • 如果 VARIABLE 已定义且不为空,则返回 VARIABLE 的值。

2. 如果未设置或为空则赋值

${VARIABLE:=value}
  • 如果 VARIABLE 没有被定义或为空,则将 value 赋值给 VARIABLE
  • 如果 VARIABLE 已定义且不为空,则不改变 VARIABLE 的值。

3. 删除变量值的前缀

${VARIABLE#pattern}
  • 删除 VARIABLE 值中最短匹配 pattern 的前缀。

4. 删除变量值的最长匹配前缀

${VARIABLE##pattern}
  • 删除 VARIABLE 值中最长匹配 pattern 的前缀。

5. 删除变量值的后缀

${VARIABLE%pattern}
  • 删除 VARIABLE 值中最短匹配 pattern 的后缀。

6. 删除变量值的最长匹配后缀

${VARIABLE%%pattern}
  • 删除 VARIABLE 值中最长匹配 pattern 的后缀。

7. 替换变量中的模式

${VARIABLE/pattern/replacement}
  • VARIABLE 中第一个匹配 pattern 的部分替换为 replacement

8. 替换变量中的所有匹配模式

${VARIABLE//pattern/replacement}
  • VARIABLE 中所有匹配 pattern 的部分替换为 replacement

9. 计算变量的长度

${#VARIABLE}
  • 返回 VARIABLE 的值的长度(即字符数)。

10. 检查变量是否为空

[ -z "${VARIABLE}" ] && echo "VARIABLE is empty"
  • 使用 -z 测试 VARIABLE 是否为空。

示例

假设 filename="example.txt"

  • echo ${filename%.txt} 会输出 example,删除 .txt 后缀。
  • echo ${filename##*.} 会输出 txt,提取最后一个 . 后的部分。
  • echo ${filename//e/E} 会输出 ExamplE.txt,将所有 e 替换为 E
  • echo ${filename:0:7} 会输出 example,从开始位置 0 截取长度为 7 的子串。

这些功能可以帮助你在脚本中处理字符串变量,进行替换、截取、设置默认值等操作。