shell腳本-高級變量


shell腳本-高級變量

字符串變量切片

	${#var}:
		返回字符串變量var的長度
	${var:offset}:
		返回字符串變量var中從第offset個字符后(不包括第offset 個字符)的字符開始,到最后的部分,offset 的取值在0到 ${#var}-1  之間(bash4.2 后,允許為負值)
	${var:offset:number}:
		返回字符串變量var中從第offset個字符后(不包括第offset 個字符)的字符開始 ,長度為number 的部分
	${var: -length} :
		取字符串的最右側幾個字符
		注意:冒號后必須有一空白字符
	${var:offset:-length}:
		從最左側跳過offset 字符,一直向右取到距離最右側lengh
	${var: -length:offset} :
		先從最右側向左取到length 個字符開始,再向右取到距離最右側offset 個字符之間的內容
		注意:-length 前空格

字符串處理

	基於模式取子串
	${var#*word} :
		其中word 可以是指定的任意字符
		功能:自左而右,查找var變量所存儲的字符串中,第一次出現的word,  刪除字符串開頭至第一次出現word 字符之間的所有字符
	${var##*word}:
		同上,貪婪模式,不同的是,刪除的是字符串開頭至最后一次由word 指定的字符之間的所有內容
		示例:
			file="var/log/messages“
			${file#*/}: log/messages
			${file##*/}: messages
	
	${var%word*}:
		其中word 可以是指定的任意字符;
		功能:自右而左,查找var變量所存儲的字符串中,第一次出現的word,  刪除字符串最后一個字符向左至第一次出現word 字符之間的所有字符;
		示例:
			file="/var/log/messages"
			${file%/*}: /var/log
	${var%%word*}:
		同上,只不過刪除字符串最右側的字符向左至最后一次出現word 字符之間的所有字符;
		示例:
			url=http://www.magedu.com:80
			${url##*:} 80
			${url%%:*} http
	查找替換
		${var/pattern/substr}:
			查找var所表示的字符串中,第一次被pattern 所匹配到的字符串,以substr 替換之
		${var//pattern/substr}: 
			查找var所表示的字符串中,所有能被pattern 所匹配到的字符串,以substr 替換之
		${var/#pattern/substr}:
			查找var所表示的字符串中,行首被pattern 所匹配到的字符串,以substr 替換之
		${var/%pattern/substr}:
			查找var所表示的字符串中,行尾被pattern 所匹配到的字符串,以substr 替換之
	查找並刪除
		${var/pattern} :
			刪除var所表示的字符串中第一次被pattern 所匹配到的字符串
		${var//pattern}:
			刪除var 所表示的字符串中所有被pattern 所匹配到的 字符串
		${var/#pattern}:
			刪除var 所表示的字符串中所有以pattern 為行首所匹配到的 字符串
		${var/%pattern}:
			刪除var 所表示的字符串中所有以pattern為 為 行尾所 匹配到的 字符串
	字符大小寫轉換
		${var^^}:
			把var中的所有小寫字母轉換為大寫
		${var,,}:
			把var中的所有大寫字母轉換為小寫
	

字符串變量賦值

	${var:-value} 或 ${var-value}:
		如果var為空或未設置,那么返回value ;否則返回var的值
	${var:+value}:
		如果var非空,則返回value,否則返回空值
	${var:=value}:
		如果var為空或未設置,那么返回value,並將value 賦值給var ;否則返回var 的值
	${var:?error_info}:
		如果var為空或未設置,那么在當前終端打印error_info ;否則返回var 的值
		
	
	為腳本程序使用配置文件, 實現變量賦值
		定義文本文件,每行定義“name=value”
		在腳本中source 此文件即可

有類型的變量

	Shell 變量一般是無類型的,但是bash Shell 提供了declare和typeset兩個命令用於指定變量的類型。

間接變量引用

	如果第一個變量的值是第二個的名字,從第一個變量引用第二個變量的值就稱為間接變量引用。
	variable1 的值是variable2 ,而variable2 又是變量名,variable2 的值為value ,
		間接變量引用是指通過variable1獲得變量值value的行為
		variable1=variable2
		variable2=value
	bash Shell 提供了兩種格式實現間接變量引用:
		eval tempvar=\$$variable1
		tempvar=${!variable1}
	示例:
		[root@server ~]# N=NAME
		[root@server ~]# NAME=wangxiaochun
		[root@server ~]# N1=${!N}
		[root@server ~]# echo $N1
		wangxiaochun
		[root@server ~]# eval N2=\$$N
		[root@server ~]# echo $N2
		wangxiaochun


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM