Shell 变量与常量
Shell 数组 

Shell 字符串

在 Shell 脚本中,字符串是一种常见的数据类型,用于存储文本或任意字符序列。Shell 支持单引号和双引号来定义字符串,并且提供了一些特殊的操作符和功能来处理字符串。


定义字符串


单引号字符串

单引号字符串中的特殊字符和变量引用会被直接输出,不会进行解析。

str1='Hello, World!'


双引号字符串

双引号字符串允许变量引用和特殊字符的解析,例如换行符 \n、制表符 \t 等。

name="Jerry"
greeting="Hello, $name!"


嵌套引号

可以在字符串中嵌套不同类型的引号,例如在双引号字符串中使用单引号。

message="He said, 'Hello!'"


字符串长度

可以使用 ${#string} 来获取字符串的长度。

str="Hello, World!"
length=${#str}
echo "Length of str: $length"


字符串拼接

可以使用变量替换或者连接操作符 + 来拼接字符串。

str1="Hello"
str2="World"
result="$str1 $str2"
echo $result


字符串操作

Shell 提供了一些字符串操作符来处理字符串,如截取子串、查找子串、替换子串等。


截取子串

${string:position:length}:从 string 中的 position 位置开始截取 length 个字符。

str="Hello, World!"
substring=${str:0:5}  # 从索引 0 开始截取 5 个字符
echo $substring  # 输出: Hello


查找子串

${string#substring}:从 string 的开头移除最短匹配的 substring。

${string##substring}:从 string 的开头移除最长匹配的 substring。

${string%substring}:从 string 的结尾移除最短匹配的 substring。

${string%%substring}:从 string 的结尾移除最长匹配的 substring。

path="/path/to/some/file.txt"
echo ${path##*/}  # 输出: file.txt (移除最长的匹配的斜杠及其前面的内容)
echo ${path%/*}   # 输出: /path/to/some (移除最短的匹配的斜杠及其后面的内容)


替换子串

${string/substring/replacement}:替换 string 中第一个匹配的 substring 为 replacement。

${string//substring/replacement}:替换 string 中所有匹配的 substring 为 replacement。

str="Hello, World!"
echo ${str/World/Universe}  # 输出: Hello, Universe!
echo ${str//o/e}            # 输出: Helle, Werld!


特殊字符的转义

在字符串中使用特殊字符时,需要进行转义,例如 \、$ 等。

echo "This is a \$ symbol"
echo "Path: /home/user"


总结

Shell 中的字符串处理功能丰富,可以通过简单的引号或双引号定义字符串,利用变量替换、截取、查找和替换操作来处理字符串的内容,从而完成各种脚本任务和文本处理操作。