📜  bash 变量替换 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:29:35.059000             🧑  作者: Mango

Bash 变量替换

在 Bash 中,变量替换是一种将变量的值替换为另一个文本或字符串的方法。它是 Bash 脚本中的重要工具之一,允许我们对字符串进行操作,以便更好地管理脚本的行为。

基本替换

在最常见的情况下,变量替换是将一部分字符串替换为另一个字符串。以下是 Bash 中最常用的替换方式:

  • ${var}: 这将以变量 $var 的当前值替换整个替换模式。例如,如果 $var 的值是 foo,则 ${var} 将被替换为 foo
  • ${var:-word}: 这将以变量 $var 的当前值替换整个替换模式。如果 $var 未设置,则 word 将被替换为值。例如,如果 $var 未设置,则 ${var:-foo} 将被替换为 foo
  • ${var:=word}: 这将以变量 $var 的当前值替换整个替换模式。如果 $var 未设置,则 word 将被设置为其值。例如,如果 $var 未设置,则 ${var:=foo} 设置 var 的值为 foo 并将其替换为 foo
  • ${var:+word}: 如果 $var 已设置,则会将 word 替换为整个替换模式,否则替换为空字符串。例如,如果 $var 已设置,则 ${var:+foo} 将被替换为 foo
长度和子字符串替换

您还可以使用 Bash 变量替换进行字符串长度和子字符串替换。以下是一些示例:

  • ${#var}: 这将替换为变量 $var 中的字符数。例如,如果 $var 的值为 foo,则 ${#var} 将被替换为 3
  • ${var:start:长度}: 这将从 $var 中的起始位置 start 开始替换为 长度 个字符的子字符串。例如,如果 $var 的值为 hello world,则 ${var:6:5} 将被替换为 world
运算符

最后,Bash 变量替换还支持运算符,例如:

  • ${var#pattern}: 这会从 $var 开始的部分中删除匹配 pattern 的最短部分。例如,如果 $var 的值为 foobar,且 patternfoo,则 ${var#pattern} 将被替换为 bar
  • ${var##pattern}: 这会从 $var 开始的部分中删除匹配 pattern 的最长部分。例如,如果 $var 的值为 foobarfoobar,且 patternfoo,则 ${var##pattern} 将被替换为 bar
  • ${var%pattern}: 这会从 $var 结束的部分中删除匹配 pattern 的最短部分。例如,如果 $var 的值为 foobar,且 patternbar,则 ${var%pattern} 将被替换为 foo
  • ${var%%pattern}: 这会从 $var 结束的部分中删除匹配 pattern 的最长部分。例如,如果 $var 的值为 foobarfoobar,且 patternbar,则 ${var%%pattern} 将被替换为 foo

希望这些示例能够帮助您更好地理解 Bash 变量替换。选择合适的替换方法可以帮助您更轻松地开发 Bash 脚本,并使其更加强大和灵活。