Linux學習筆記 高階變數

2022-07-06 01:15:11 字數 3810 閱讀 4431

高階變數分為三個主題,1、變數擴充套件,2、命令替換,3、算術擴充套件

1、變數擴充套件

變數擴充套件基本型:$

變數擴充套件是一種簡易的條件判斷,對不同的條件賦予變數不同的替換值

變數擴充套件是對基本型加上條件判斷,如若條件符合,則進行變數替換,不符合則進行另乙個操作。

取消變數,則這個變數不存在或未定義。

比如

mysql='

thirteen

'此時變數為非空

mysql=此時變數為空,值為null

1.1 測試變數與存在與否的基本用法

語法:$

判斷條件:若變數不存在則滿足條件,就傳回預設值,不滿足則傳回變數的值

用例: unset mysql

r=$echo

$r因為unset了mysql所以變數不存在,因此echo $r的時候就會直接返回thirteen

1.2 測試變數「不存在」或其值為空:傳回預設值

語法:$

判斷條件:若變數不存在或值為空則滿足條件,就傳回預設值,不滿足則傳回變數的值

用例: mysql=r=$

echo

$r因為mysql的值為空,因此echo $r的時候就會直接返回thirteen

1.3 測試變數的存在性

語法:$

判斷條件:若變數存在且值為非空則滿足條件,就傳回真值,不滿足則傳回空值

用例: mysql='

exist

'r=$

echo

$r因為mysql存在且值為非空,因此echo $r的時候就會直接返回true

2、變數擴充套件:取字串切片、字串長度

去字串切片的語法有兩種:

1

、語法:$

釋義:從位置起點取字串,知道字串結束

用例 mysql="

hanbimysql

"substr=$

echo

$substr

從第六個字元開始擷取字串,結果為mysql

2、

語法:$

釋義:從位置起點取字串,擷取指定長度的字串

用例 mysql="hanbimysql"substr=$

echo$substr

從第六個字元開始擷取字串長度為1的字串

計算字串長度

語法:$

釋義:傳回變數值的字串長度

用例 mysql="

hanbimysql

"echo

$直接返回mysql的字串長度為10

這個方法與取陣列元素個數有些類似,取陣列元素個數方法如下

1

、$2、$

3、變數擴充套件:對比樣式

這裡的對比樣式的意思是擷取字串的某一部分:做法是將其刪除或替換

3.1、由字串前面對比,刪除相符者

從左開始匹配的語法如下

語法:$

釋義:從字串左邊開始匹配,然後刪除「最短相符合的字串」

用例: filename="/

usr/sbin/ntpdate

"r=$

echo $r

說明:對比的樣式為/

*/,/*

/的意思為凡是碰到雙斜線內有字串(空字串也算)的,則對比符合。因為最後匹配到的最短的為/usr/,

echo $r返回的則為sbin/ntpdate

如果filename為//usr/sbin/ntpdate,則最後返回的是usr/sbin/ntpdate

上面為刪除最短如果要刪除最長的則用以下語法

語法:$

釋義:從字串左邊開始匹配,然後刪除「最長相符合的字串」

用例: filename="/usr/sbin/ntpdate"r=$

echo $r

說明:對比的樣式為/*/,/*/的意思為凡是碰到雙斜線內有字串(空字串也算)的,則對比符合。因為最後匹配到的最短的為/usr/sbin/,

echo $r返回的則為ntpdate

從右開始匹配的語法如下

語法:$

釋義:從字串右邊開始匹配,然後刪除「最短相符合的字串」

用例: filename="

/usr/sbin/ntpdate

"r=$

echo $r

說明:對比的樣式為/*,/

*/的意思為凡是碰到斜線後有字串(空字串也算)的,則對比符合。因為最後匹配到的最短的為/ntpdate,

echo $r返回的則為usr/sbin

上面為刪除最短如果要刪除最長的則用以下語法

語法:$

釋義:從字串右邊開始匹配,然後刪除「最長相符合的字串」

用例: filename="

/usr/sbin/ntpdate

"r=$

echo $r

說明:因為最後匹配到的最長的為/usr/sbin/ntpdate,

echo $r返回的則為空

上述為刪除,如果要取代字串則用如下語法,舉個栗子

語法:$

釋義:從字串中匹配樣式,如果有匹配的樣式則取最長的子字串然後用替換字串替代

用例: filename="

13.13.13.13:131

"r=$

echo

$r說明::會被替代為.,則輸出的結果為13.

13.13.13.131

如果要全部替代則語法為$

如果要把替換的字串刪掉(只刪第乙個)則語法為$

刪除全部則為$

如果要求樣式在句首或句尾:句首$,句尾$

4、變數擴充套件:取變數名稱列表、陣列索引列表

取變數名稱列表

語法:$或$

釋義:把所有變數名符合開頭字串的變數列印出來,各變數之間用$ifs定義的第乙個分隔符隔開

用例: filename=

dir=dir2=

echo $

說明:列印了di開頭的變數名,

dir 和dir2

取陣列索引列表

語法:$或$

釋義:把陣列變數的所有索引列出來,各索引值之間用$ifs定義的第乙個分隔符隔開

用例: arr=(123

45) r=$

echo

$r 說明:列印值為0 12

34如果擴充套件式使用@符號,並且出現在雙引號中,如for i in "$",name這裡面返回的不是乙個整的字串,

每個索引值返回的都是單獨的字串

2、命令替換

所謂命令替換就是將命令執行後的標準輸出放入變數當中。比如使用ls命令之後,如何將列印出來的檔名放入變數當中以便後續的使用。

語法:

新式寫法:變數名稱=$(命令)

舊式寫法:變數名稱=`命令`「`"

這個不是單引號!

bash會在執行命令後產生的標準輸出,賦值給指定的變數。這個過程中,會預設刪除換行字元

3、算術擴充套件

因為bash的變數預設是沒有資料型,全部以字串視之。因此在賦值變數的需要乙個算術擴充套件

比如:

i=1+1

這個時候如果你進行ech $i

那麼他輸出的是1+1而不是2

如果要在進行賦值的時候進行算術操作則使用以下語法

i=$((1+1))

Python學習筆記 變數的高階

變數高階 1 變數的引用 變數和資料都是儲存在記憶體中的 在python中函式的引數傳遞以及返回值都是靠引用傳遞的 2 引用的概念 在python中 變數和資料都是分開儲存的 資料儲存在記憶體中的乙個位置 變數儲存著資料在記憶體中的位址 變數中記錄資料的位址,就叫做引用 使用id 函式可以檢視變數中...

python學習筆記 10 變數高階

在python中 在python中,變數的名字類似於便簽紙貼在資料上。a 1print id a b a print id b a 2 print id a b a print id b output 140709511300768 140709511300768 140709511300800 1...

Linux學習筆記(指令碼變數)

作業系統 centos 6.5,使用者root 前兩天看鳥哥的linux私房菜,到shell指令碼這一塊兒,發現以前的基礎真心沒打好,就標了個書籤,想寫個blog記下來,然後就沒然後了,忘了。今天繼續看的時候,看到linux啟動流程,然後vi etc profile,其他的shell語句都能看懂,忽...