Shell-变量操作

1. 字符串操作

1.1 语法

image

1.2 示例

1) 获取变量长度

VAR="hello world"
echo ${#VAR}

[root@o18c tmp]# VAR="hello world"
[root@o18c tmp]# echo ${#VAR}
11

2) 通过索引下标截取子串

echo ${VAR:6}
echo ${VAR:6:3}

[root@o18c tmp]# echo ${VAR:6}
world
[root@o18c tmp]# echo ${VAR:6:3}
wor
[root@o18c tmp]#

3) 查找指定字符截取子串

VAR='https://www.mirrors163.com'
# 从左边开始找到字符 '//' 并将左边所有字符和自身删除,即保留其右边所有字符
echo ${VAR#*//}
echo ${VAR#*\.}

# 从左边开始找到最右边一个的字符 '//' 并将左边所有字符和自身删除,即保留其右边所有字符字符
echo ${VAR##*\.}

# 从右边开始找到字符 'www' 并将右边所有字符和自身删除,即保留其左边所有字符
echo ${VAR%www*}
echo ${VAR%\.*}
# 从右边开始找到最左边一个的字符 '.' 并将右边所有字符和自身删除,即保留其左边所有字符字符
echo ${VAR%%\.*}

# 是去掉左边字符(在键盘上 # 在 $ 之左边)
% 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
*是用来匹配不要的字符,也就是想要去掉的那部分
还有指定字符分隔号,与*配合,决定取哪部分
注意: 查找的字符串支持正则模式

[root@o18c tmp]# VAR='https://www.mirrors163.com'
[root@o18c tmp]# echo ${VAR#*//}
www.mirrors163.com
[root@o18c tmp]# echo ${VAR##*\.} 
com
[root@o18c tmp]# echo ${VAR#*\.}
mirrors163.com
[root@o18c tmp]# echo ${VAR%www*}
https://
[root@o18c tmp]# echo ${VAR%%\.*}
https://www
[root@o18c tmp]# echo ${VAR%\.*}
https://www.mirrors163
[root@o18c tmp]# echo ${VAR%%\.*}
https://www
[root@o18c tmp]#

4) 变量替换

# 使用 'baidu' 替换 字符中的 'mirrors163'
echo ${VAR/mirrors163/baidu}
echo ${VAR/m/M}
# 使用 'M' 替换 字符中所有的字符 'm'
echo ${VAR//m/M}

[root@o18c tmp]# echo ${VAR/mirrors163/baidu}
https://www.baidu.com
[root@o18c tmp]# echo ${VAR/m/M}
https://www.Mirrors163.com
[root@o18c tmp]# echo ${VAR//m/M}
https://www.Mirrors163.coM
[root@o18c tmp]#

5) 匹配开头或结尾字符替换

str="apple, tree, apple tree"
echo ${str/#apple/APPLE}
echo ${str/%tree/TREE}

# 查找字符串str中 "apple"开头的子串并替换成 'APPLE'
[root@o18c tmp]# echo ${str/#apple/APPLE}
APPLE, tree, apple tree
[root@o18c tmp]# echo ${str/%apple/APPLE}
apple, tree, apple tree
# 查找字符串str中 "tree"结尾的子串并替换成 'TREE'
[root@o18c tmp]# echo ${str/%tree/TREE}
apple, tree, apple TREE
[root@o18c tmp]#

2. 根据状态给变量赋值

2.1 语法


2.2 示例

猜你喜欢

转载自www.cnblogs.com/binliubiao/p/12548160.html