2 變量進階
2.1 變量實踐
2.1.1 高級賦值
學習目標
這一節,我們從 基礎知識、簡單實踐、小結 三個方面來學習
基礎知識
簡介
所謂的高級賦值,是另外的一種變量值獲取方法,這里涉及到更多我們學習之外的一些shell內置變量格式,其實這部分的內容主要還是在字符串的基礎上,如何更精細的獲取特定的信息內容:主要涉及到的內容樣式如下:
字符串截取按分隔符截取: # 右 % 左${file#/} 刪除匹配結果,保留第一個/右邊的字符串${file##/} 刪除匹配結果,保留最后一個/右邊的字符串${file%/} 刪除匹配結果,保留第一個/左邊的字符串${file%%/} 刪除匹配結果,保留最后一個/左邊的字符串注意:匹配內容的正則表達式,盡量不要出現特殊邊界字符
字符串替換${file/dir/path} 把第一個dir替換成path:/path1/dir2/dir3/n${file//dir/path} 把所有dir替換成path:/path1/path2/path3/n${file/#dir/path} 將從左側能匹配到的dir,則替換成 path 然后返回;否則直接返回 ${var}。${file/%dir/path} 將從右側能匹配到的dir,則替換成 path 然后返回;否則直接返回 ${var}。注意:如果匹配內容使用的是正則符號,應該注意正則符號的寫法
字符串轉換${file^^} 把file中的所有小寫字母轉換為大寫${file,,} 把file中的所有大寫字母轉換為小寫
簡單實踐
實踐1-字符串截取
字符串截取示例
[root@localhost ~]# string=abc12342341
[root@localhost ~]# echo ${string#a*3}
42341
[root@localhost ~]# echo ${string#c*3}
abc12342341
[root@localhost ~]# echo ${string#*c1*3}
42341
[root@localhost ~]# echo ${string##a*3}
41
[root@localhost ~]# echo ${string%3*1}
abc12342
[root@localhost ~]# echo ${string%%3*1}
abc12
字符串截取賦值
[root@localhost ~]# file=/var/log/nginx/access.log
[root@localhost ~]# filename=${file##*/}
[root@localhost ~]# echo $filename
access.log
[root@localhost ~]# filedir=${file%/*}
[root@localhost ~]# echo $filedir
/var/log/nginx
實踐2-字符串替換
字符串替換示例
[root@localhost ~]# str="apple, tree, apple tree, apple"
[root@localhost ~]# echo ${str/apple/APPLE}
APPLE, tree, apple tree, apple
[root@localhost ~]# echo ${str//apple/APPLE}
APPLE, tree, APPLE tree, APPLE
[root@localhost ~]# echo ${str/#apple/APPLE}
APPLE, tree, apple tree, apple
[root@localhost ~]# echo ${str/%apple/APPLE}
apple, tree, apple tree, APPLE使用正則的情況下,代表盡可能多的匹配
[root@localhost ~]# file=dir1@dir2@dir3@n.txt
[root@localhost ~]# echo ${file/#d*r/DIR}
DIR3@n.txt
[root@localhost ~]# echo ${file/%3*/DIR}
dir1@dir2@dirDIR
實踐3-字符串轉換
[root@localhost ~]# str="apple, tree, apple tree, apple"
[root@localhost ~]# upper_str=${str^^}
[root@localhost ~]# echo ${upper_str}
APPLE, TREE, APPLE TREE, APPLE
[root@localhost ~]# lower_str=${upper_str,,}
[root@localhost ~]# echo ${lower_str}
apple, tree, apple tree, apple
小結