Shell 變數的取用 刪除 取代與替換

2021-07-29 19:59:19 字數 3758 閱讀 9648

——來自《鳥哥的linux私房菜》

——總結做方便查閱之用

變數的取用: echo

echo $variable

echo $path

echo $

變數的配置守則

1.變數與變數內容以乙個等號『=』來鏈結,如下所示: 

『myname=vbird』

2.等號兩邊不能直接接空格符,如下所示為錯誤: 

『myname = vbird』或『myname=vbird tsai』

3.變數名稱只能是英文本母與數字,但是開頭字元不能是數字,如下為錯誤: 

『2myname=vbird』

4.變數內容若有空格符可使用雙引號『"』或單引號『'』將變數內容結合起來,但

雙引號內的特殊字元如 $ 等,可以保有原本的特性,如下所示:

『var="lang is $lang"』則可得『lang is en_us』

單引號內的特殊字元則僅為一般字元 (純文字),如下所示:

『var='lang is\$lang『』則得『lang is \$lang』

5.可用跳脫字元『 \ 』將特殊符號(如 [enter], $, \, 空格符, '等)變成一般字元;

6.在一串命令中,還需要藉由其他的命令提供的資訊,可以使用反單引號『`命令`』或 『$(命令)』。特別注意,那個 ` 是鍵盤上方的數字鍵 1 左邊那個按鍵,而不是單引號! 例如想要取得核心版本的配置:

『version=\$(uname -r)』再『echo \$version』可得『2.6.18-128.el5』

7.若該變數為擴增變數內容時,則可用"\$變數"或\$ 累加內容,如下所示:

『path="$path":/home/bin』

ps.我一般用\$,在變數拼接的時候尤其重要,name=\$nameyes,name的內容是\$nameyes 這個變數;name=\$yes,可以把\$name和yes拼接起來

8.若該變數需要在其他子程式執行,則需要以 export 來使變數變成環境變數:

『export path』

9.通常大寫字元為系統預設變數,自行配置變數可以使用小寫字元,方便判斷 (純粹依照使用者興趣與嗜好) ;

10.取消變數的方法為使用 unset :『unset 變數名稱』例如取消 myname 的配置:

『unset myname』

變數內容的刪除、取代與替換

範例一:先讓小寫的 path 自定義變數配置的與 path 內容相同

path=$

echo $path

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

範例二:假設要將前兩個目錄刪除掉,如何顯示?

echo $

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

解釋:

範例三:我想要刪除前面所有的目錄,僅保留最後乙個目錄

echo $

/root/bin

多加了乙個 # 變成 ## 之後,變成『刪除掉最長的那個資料』

如果想要『從後面向前刪除變數內容』呢? 這個時候就得使用百分比 (%) 符號了

範例四:我想要刪除最後面那個目錄,亦即從 : 到 bin 為止的字串

echo $

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

範例五:那如果我只想要保留第乙個目錄呢?

echo $

/usr/kerberos/sbin

了解了刪除功能後,接下來談談取代吧

範例六:將 path 的變數內容內的 sbin 取代成大寫 sbin:

echo $

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

echo $

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

如果是兩條斜線,那麼就變成所有符合的內容都會被取代 總結

變數配置方式說明$

$若變數內容符合『舊字串』則『第乙個舊字串會被新字串取代』

若變數內容符合『舊字串』則『全部的舊字串會被新字串取代』

變數的測試與內容替換

在某些時刻我們常常需要『判斷』某個變數是否存在,若變數存在則使用既有的配置,若變數不存在則給予乙個常用的配置。

範例一:測試一下是否存在 username 這個變數,若不存在則給予 username 內容為 root

echo $username

<==由於出現空白,所以 username 可能不存在,也可能是空字串

username=$

echo $username

root     <==因為 username 沒有配置,所以主動給予名為 root 的內容。

username="vbird tsai" <==主動配置 username 的內容

username=$

echo $username

vbird tsai   <==因為 username 已經配置了,所以使用舊有的配置而不以 root 取代

範例二:若 username 未配置或為空字串,則將 username 內容配置為 root

username=""

username=$

echo $username

<==因為 username 被配置為空字串了!所以當然還是保留為空字串!

username=$

echo $username

root   <==加上『 : 』後若變數內容為空或者是未配置,都能夠以後面的內容替換!

變數配置方式

str 沒有配置

str 為空字串

str 已配置非為空字串

var=$

var=expr

var=

var=$str

var=$

var=expr

var=expr

var=$str

var=$

var=

var=expr

var=expr

var=$

var=

var=

var=expr

var=$

str=expr

var=expr

str 不變

var=

str 不變

var=$str

var=$

str=expr

var=expr

str=expr

var=expr

str 不變

var=$str

var=$

expr 輸出至 stderr

var=

var=$str

var=$

expr 輸出至 stderr

expr 輸出至 stderr

var=$str

Shell 變數的取用 刪除 取代與替換

來自 鳥哥的linux私房菜 總結做方便查閱之用 變數的取用 echo echo variable echo path echo 變數的配置守則 1.變數與變數內容以乙個等號 來鏈結,如下所示 myname vbird 2.等號兩邊不能直接接空格符,如下所示為錯誤 myname vbird 或 my...

bash變數內容的刪除與取代

摘自 鳥哥的linux私房菜 基礎學習版 每個引數字元 variable 要修改的變數 符合取代文字的 最短的 那乙個 符合取代文字的 最長的 那乙個 或 代表 從變數內容的最前面開始刪除 從最前面開始刪除時,從最前面的 字元開始刪除 kerberos bin 用來取代0到無窮多個任意字元,用來表示...

shell 變數刪除與替換

1 從左往右刪除匹配內容 root localhost echo 獲取變數值 root localhost echo 獲取變數長度 16 root localhost echo 從左往右最短匹配 root localhost echo 從左往右最長匹配 cn2 從右往左刪除匹配內容 root loc...