📅  最后修改于: 2023-12-03 15:13:38.236000             🧑  作者: Mango
在Bash脚本中,子字符串是从一个字符串中获取一部分子字符串的操作。子字符串可以通过位置或者模式匹配来获取。本文介绍如何使用参数扩展的方式来操作子字符串。
Bash中使用${parameter:offset:length}
语法来获取位置参数的子字符串。其中parameter
为要操作的字符串,offset
为目标子字符串的起始位置,length
为子字符串的长度。
示例代码
#!/bin/bash
string="Hello World"
echo ${string:0:5} # 输出 "Hello"
echo ${string:6:5} # 输出 "World"
在上述示例中,${string:0:5}
表示从string
变量的第一个字符开始获取5个字符,${string:6:5}
表示从string
变量的第七个字符开始获取5个字符。
另外一种获取子字符串的方法是使用模式匹配。使用${parameter#pattern}
或者${parameter##pattern}
可以从parameter
字符串的开头开始匹配pattern
,并替换匹配的字符串为空字符串。其中,${parameter#pattern}
仅匹配第一次出现的pattern
,${parameter##pattern}
匹配最后一次出现的pattern
。
使用${parameter%pattern}
或者${parameter%%pattern}
可以从parameter
字符串的结尾开始匹配pattern
。
示例代码
#!/bin/bash
string="Hello World"
echo ${string#Hello} # 输出 " World"
echo ${string%World} # 输出 "Hello "
echo ${string//o/O} # 输出 "HellO WOrld"
在上述示例中,${string#Hello}
表示从string
变量开头匹配Hello
并替换为空字符串,${string%World}
表示从string
变量结尾匹配World
并替换为空字符串。${string//o/O}
表示全局替换o
为O
。
Bash子字符串可以通过位置参数或者模式匹配来获取。位置参数使用${parameter:offset:length}
语法,模式匹配使用${parameter#pattern}
、${parameter##pattern}
、${parameter%pattern}
和${parameter%%pattern}
语法来操作。掌握这些用法可以帮助我们更好地使用Bash脚本。