linux 变量子串,变量3-变量子串

# **一、shell变量子串**

## **1.子串的语法和功能**

| 子串语法 | 功能说明 |

|---|---|

|${#string}|变量最前面加井号可以返回变量的长度|

|${string:n}|变量后面加冒号并写数字,从该位置后提取字符串 |

|${string:n:m}|从n位置提取长度是m的字符串|

|${string#word}|从开头开始删除最短匹配word子串的内容 |

|${string##word}|从开头开始删除最长匹配word子串的内容|

|${string%word}|从结尾开始删除最短匹配word子串的内容|

|${string%%word}|从结尾开始删除最长匹配word子串的内容|

|${string/A/B}|用B字符串替代第一个匹配的A子串|

|${string//A/B}|用B字符串替代所有匹配的A子串|

|${string/#A/B}|如果源字符串前缀匹配A,则用B字符串替代A|

|${string/%A/B}|如果源字符串后缀匹配A,则用B字符串替代A|

> 说明:子串可以是一个正则表达式。

## **2.案例**

### 1)提取字符串和计算长度案例

* cat t1.sh

```

OLD=abcABC123ABCabc

echo ${#OLD}

echo ${OLD:6}

echo ${OLD:6:4}

```

* sh t1.sh

```

15#计算长度,合计15个字符

123ABCabc#从第6个字符串开始提取

123A#从第6个字符串开始,提取4个字符

```

### 2)匹配子串删除字符串案例

* cat /server/scripts/t1.sh

```

OLD=abcABC123ABCabc

echo ${OLD#A*C}

echo ${OLD#a*C}

echo ${OLD##a*C}

echo ${OLD%A*c}

echo ${OLD%%A*c}

```

* sh /server/scripts/t1.sh

```

abcABC123ABCabc#未能匹配到A开头的字符,原样输出

123ABCabc#从前最短匹配成功,删除abcABC

abc#从前最长匹配成功,删除abcABC123ABC

abcABC123#从后最短匹配成功,删除ABCabc

abc#从后最长匹配成功,删除ABC123ABCabc

```

### 3)匹配替换字符串案例

* cat /server/scripts/t1.sh

```

OLD=abcABC123ABCabc

echo ${OLD/ABC/MMM}

echo ${OLD//ABC/MMM}

echo ${OLD/#abc/MMM}

echo ${OLD/%abc/MMM}

```

* sh /server/scripts/t1.sh

```

abcMMM123ABCabc#将匹配到的第一个ABC替换为MMM

abcMMM123MMMabc#将匹配到的所有ABC替换为MMM

MMMABC123ABCabc#将前缀匹配到的abc替换为MMM

abcABC123ABCMMM#将后缀匹配到的abc替换为MMM

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值