1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# 字符串 str 长度
${#str}
expr length "$str"
# 子串 substr 出现位置,找不到返回 0
expr index "$str" "$substr"
# 子串 substr 开头匹配,找不到返回 0
expr match "$str" "$substr"
# 字符串 str 抽取左起位置 pos 后 长度 len 的子串
${str:$pos}
${str:$pos:$len}
expr substr "$str" $pos $len
# 字符串 str 抽取右起位置 pos 前的子串
${str: -pos}
${str:(pos)}
# 正则 pat 抽取字符串 str 开头子串
expr match "$str" "\($pat\)"
expr "$str" : "\($pat\)"
# 正则 pat 抽取字符串 str 结尾子串
expr match "$str" ".*\($pat\)"
expr "$str" : ".*\($pat\)"
# 删除字符串 str 开头的最短子串 sub
${str#$sub}
# 删除字符串 str 开头的最长子串 sub
${str##$sub}
# 删除字符串 str 结尾的最短子串 sub
${str%$sub}
# 删除字符串 str 结尾的最长子串 sub
${str%%$sub}
# 替换字符串 str 第一个子串 sub 为字符串 rep
${str/"$sub"/"$rep"}
# 替换字符串 str 所有子串 sub 为字符串 rep
${str//"$sub"/"$rep"}
# 替换字符串 str 开头的子串 sub 为字符串 rep
${str/#"$sub"/"$rep"}
# 替换字符串 str 结尾的子串 sub 为字符串 rep
${str/%"$sub"/"$rep"}
# var为空或没有设置,代入word,否则代入var值
${var:-word}
# 如果var已经被设置且不为空,则代入它的值,否则代入word,并且在后面var始终为word的值。位置参量不能用这种方式赋值。
${variable:=word}
# 如果变量var已被设置且值为非空,代入word值,否则什么也不代入
${variable:+word}
# 如果变量var已被设置值且为非空,就代入它的值,否则输出word并从shell中退出,如果有省略了word,就会显示信息:parameter null or not set.
${var:?word}
|