shell变量内字符处理${}

1. 判断变量是否存在

不存在则赋值

#如果变量不存在,则赋值4096
mem_size_MB=${mem_size_MB:-4096}
mem_size_MB=${mem_size_MB:-"4096 MB"}

 

2. 计算变量长度

 echo ${#var}

 

3. 子串提取

3.1. 变量值从后往前字符截取

$(var【变量名】:【冒号】 【空格】 -【短横线】【保留位数】)

#取变量值后12个字符
QoS=000000000000$(echo "1024 * $4" |bc) 
NIC_QoS=aaaaaaaa-aaaa-aaaa-aaaa-${QoS: -12} 

 

3.2. 变量值从前往后截取字符串

取变量值前12个字符

#从位置0开始,提取长度为12的子字符串
substring=${var:0:12} 

 

3.3. 中段截取

取变量值第5-12个字符

#从位置5开始,提取长度为7的子字符串
substring=${var:5:7}

 

4.字符替换

判断如果变量中存在该字符,则替换 

4.1 替换第一个匹配项

hugemem_SIZE=${hugemem_SIZE/largeGB/large}

 4.2. 替换所有匹配项

hugemem_SIZE=${hugemem_SIZE//GBGB/GB}

 

5. 删除变量内字段

5.1 删除匹配项

替换为空,即为删除

# 删除第一个匹配项
hugemem_SIZE=${hugemem_SIZE/GB/}
# 删除所有匹配项
hugemem_SIZE=${hugemem_SIZE//GB/}

5.2 删除开头

 # 删除前缀

#删除开头的large【最短匹配】
hugemem_SIZE=${hugemem_SIZE#large}
#删除开头的large【最长匹配】
hugemem_SIZE=${hugemem_SIZE##large}

5.3 删除结尾

%删除后缀

删除结尾的GB【最短匹配】
hugemem_SIZE=${hugemem_SIZE%GB}
删除结尾的GB【最长匹配】
hugemem_SIZE=${hugemem_SIZE%%GB}

 5.4 示例

提取文件扩展名

string="file.txt"  
echo ${string##*.}  # 提取扩展名( 输出:txt)

 

6. 大小写转换

lowercase=${var,,}  # ,,转换为小写  
uppercase=${var^^}  # ^^转换为大写

 

7. 数组操作

array=("one" "two" "three")  
echo ${array[0]}  # 输出 "one" (访问数组的第一个元素)  
echo ${array[@]}  # 输出 "one two three" (输出数组的所有元素)  
echo ${#array[@]}  # 输出 3 (获取数组的长度)

 

8. 变量值间接引用

通过变量名引用另一个变量的值

这个非常实用,真叫我梦里寻它千百度

[root@aliyun-3month ~]# var_01="(*v*)"
[root@aliyun-3month ~]# varname="var_01"
[root@aliyun-3month ~]# echo ${!varname}  # 输出 "(*v*)"
(*v*)

 

posted @ 2024-03-28 11:47  咿呀哒喏  阅读(33)  评论(0编辑  收藏  举报