Sell变量的取用、删除、取代与替换
變量的取用:echo
echo $variable
echo $PATH
echo ${PATH}
變量的配置守則
myname=VBird
myname = VBird 或者 mayname=VBird Tsai
2myname=VBird
var=“l(fā)ang is $LANG” 則可得 lang is en_US
單引號(hào)內(nèi)的特殊字符則僅為一般字符(純文本),如下所示:
var=‘long is $LANG’ 則可得 ‘lang is $LANG’
例如想要取得核心版本的配置:
version=$(uname -r)再echo $version 可得2.6.18-128.el6
PATH="$PATH":/home/bin
PS.我一般用${變量},再變量拼接的時(shí)候尤其重要,name=$nameyes,name的內(nèi)容時(shí)$nameyes這個(gè)變量;name=${name}yes,可以$name和yes拼接起來
exprot PATH
unset myname
變量?jī)?nèi)容的刪除、取代與替換
范例一:先讓小寫的path自定義變量配置的PATH內(nèi)容相同
path=${PATH}
echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
范例二:假設(shè)要將錢連個(gè)目錄刪除掉,如何顯示?
echo ${paht#/*kerberos/bin:}
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
解釋
范例三:我想要?jiǎng)h除前面所有的目錄,僅保留最后一個(gè)目錄
echo ${path##/*:}
/root/bin
多加了一個(gè)#變成##之后,變成”刪除掉最長(zhǎng)的那個(gè)數(shù)據(jù)“
- #:符合取代文字的"最短的"那一個(gè)
- ##:符合取代文字的”最長(zhǎng)的“那一個(gè)
如果想要"從后面向前刪除變量的內(nèi)容"呢?這個(gè)時(shí)候就要使用百分號(hào)(%)符號(hào)了
范例四:我想要?jiǎng)h除最后面那個(gè)目錄,亦即從:到bin為止的字符串
echo ${path%:*bin}
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
范例五:;那如果我只想要保留第一個(gè)目錄呢?
echo ${path%%:*bin}
/usr/kerberos/sbin
了解刪除功能后,接下來談?wù)勅〈?/p>
范例六:將path的變量?jī)?nèi)容內(nèi)的sbin取代成大寫SBIN:
echo ${path/sbin/SBIN}
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
這部分就容易理解多了!關(guān)鍵詞在于連個(gè)斜線,兩斜線中間的是舊字符串,后面的是新字符串
echo ${path//sbin/SBIN} /usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/root/bin若果是兩條斜線,那么就變成所有符合的內(nèi)容都會(huì)被取代
總結(jié)
| ${變量#關(guān)鍵詞} ${變量##關(guān)鍵詞} | 若變量?jī)?nèi)容從頭開始的數(shù)據(jù)符合"關(guān)鍵詞",則將符合的最短數(shù)據(jù)刪除 若變量?jī)?nèi)容從頭開始的數(shù)據(jù)符合"關(guān)鍵詞",則將符合的最長(zhǎng)數(shù)據(jù)刪除 |
| ${變量%關(guān)鍵詞} ${變量%%關(guān)鍵詞} | 若變量?jī)?nèi)容從尾向前的數(shù)據(jù)符合"關(guān)鍵詞",則將符合的最短數(shù)據(jù)刪除 若變量?jī)?nèi)容從尾向前的數(shù)據(jù)符合"關(guān)鍵詞",則將符合的最長(zhǎng)數(shù)據(jù)刪除 |
| ${變量/舊字符串/新字符串} ${變量//舊字符串/新字符串} | 若變量?jī)?nèi)容符合"舊字符串",則"第一個(gè)舊字符串會(huì)被新字符串取代" 若變量?jī)?nèi)容符合"舊字符串" 則 “全部的舊字符串會(huì)被新字符串取代” |
變量的測(cè)試與內(nèi)容替換
在某些時(shí)刻我們常常需要"判斷"某個(gè)變量是否存在,若變量存在則使用既有的配置,若變量不存在則給予一個(gè)常用的配置。
范例一:測(cè)試一下是否存在 username 這個(gè)變量,若不存在則基于username內(nèi)容為root
范例二:若 username 未配置或?yàn)榭兆址?#xff0c;則將 username 內(nèi)容配置為 root
username=""username=${username-root}echo $username<==因?yàn)?username 被配置為空字符串了!所以當(dāng)然還是保留為空字符串!username=${username:-root}echo $usernameroot <==加上『 : 』后若變量?jī)?nèi)容為空或者是未配置,都能夠以后面的內(nèi)容替換!| 變量配置方式 | str 沒有配置 | str 為空字符串 | str 已配置非為空字符串 |
| var=${str-expr} | var=expr | var= | var=$str |
| var=${str:-expr} | var=expr | var=expr | var=$str |
| var=${str+expr} | var= | var=expr | var=expr |
| var=${str:+expr} | var= | var= | var=expr |
| var=${str=expr} | str=expr var=expr | str 不變 var= | str 不變 var=$str |
| var=${str:=expr} | str=expr var=expr | str=expr var=expr | str 不變 var=$str |
| var=${str?expr} | expr 輸出至 stderr | var= | var=$str |
| var=${str:?expr} | expr 輸出至 stderr | expr 輸出至 stderr | var=$str |
轉(zhuǎn)自:https://www.cnblogs.com/shirley130912/p/4301769.html
總結(jié)
以上是生活随笔為你收集整理的Sell变量的取用、删除、取代与替换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。