1. 程式人生 > >Linux shell的${}用法

Linux shell的${}用法

cnblogs var shell 獲取 去除 root 長度 賦值 name

***************獲取字符串長度
${#varname}
[root@localhost ~]# var=123456
[root@localhost ~]# echo ${#var}
6

***************字符串切片
${var:offset}
${var:offset:length}
截取從offset個字符開始,向後length個字符
[root@localhost ~]# echo ${var:0:2}
12
[root@localhost ~]# echo ${var:2:3}
345

截取最後一個字符:
[root@localhost ~]# echo ${var:(-1)}
6
截取最後三個字符:
[root@localhost ~]# echo ${var:(-3)}
456
截取從倒數第三個字符後的兩個字符:
[root@localhost ~]# echo ${var:(-3):2}
45
註意字符的順序是從零開始的

***************替換字符串
格式:${varname/pattern/string}表示匹配第一個字符
[root@localhost ~]# animal=‘black dog‘
[root@localhost ~]# echo ${animal/black/green}
green dog
pattern可以使用正則表達式
[root@localhost ~]# char=123aaabbbccc
[root@localhost ~]# echo ${char/a
/4}
1234
${varname/pattern/string/}表示匹配所有字符

***************字符串截取
格式:
${varname#word} 表示刪除匹配前綴
${varname##word}
${varname%word} 表示刪除匹配後綴
${varname%%word}

% 去掉右邊, 為最短匹配模式, %% 最長匹配模式
# 去掉左邊,最短匹配模式,## 最長匹配模式

[root@localhost ~]# url="https://www.cnblogs.com/hzdwwzz"
[root@localhost ~]# echo ${url#//}
www.cnblogs.com/hzdwwzz
以//為分隔符去除字符串
[root@localhost ~]# echo ${url##
/}
hzdwwzz
以/為分隔符去除所有前綴

[root@localhost ~]# echo ${url%%//}
https:
[root@localhost ~]# echo ${url%/

}
https://www.cnblogs.com

***************變量狀態賦值
${VAR:-string} 如果 VAR 變量為空則返回 string
${VAR:+string} 如果 VAR 變量不為空則返回 string
${VAR:=string} 如果 VAR 變量為空則重新賦值 VAR 變量值為 string
${VAR:?string} 如果 VAR 變量為空則將 string 輸出到 stderr

Linux shell的${}用法