📜  Bash子字符串(1)

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

Bash子字符串

在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}表示全局替换oO

总结

Bash子字符串可以通过位置参数或者模式匹配来获取。位置参数使用${parameter:offset:length}语法,模式匹配使用${parameter#pattern}${parameter##pattern}${parameter%pattern}${parameter%%pattern}语法来操作。掌握这些用法可以帮助我们更好地使用Bash脚本。