標籤:
進階變數
基本形式
[1].變數擴充 格式 ${變數名稱}
[2].命令擴充 格式 $(命令)
[3].算術擴充 格式 $((算術式))
1.變數擴充
基本形式:${變數名稱}
變數擴充含義:一種簡易的條件判斷,對不同的條件賦予變數不同的值替換.它和變數存在與否的關係很大.
1.1 測試變數是否存在的基本用法
文法: ${待測變數-預設值}
說明:若待測變數不存在則符合判斷條件,以傳回預設值作為處置.
解析:若待測變數不存在則返回預設值,否則返回變數的值
執行個體:
unset a
echo ${a-‘預設‘} #輸出為‘預設‘
1.2 測試變數不存在或其值為空白時傳回一個預設值
文法:${待測變數:-預設值}
執行個體:
a=
echo ${a:-‘預設‘} #輸出為‘預設‘
1.3 測試變數不存在或其值為空白給變數賦予一個預設值
文法:${待測變數:=預設值}
執行個體:
a=
echo ${a:=‘預設‘}
echo $a #輸出為2行‘預設‘
1.4 測試變數不存在或其值為空白,輸出一個提示資訊
文法:${待測變數:?提示資訊}
執行個體:
a=
echo r={a:?提示資訊} #輸出"提示資訊"
1.5 測試變數存在且為非空則返回真值
文法:${待測變數:+真值}
執行個體:
a=hello
echo ${a:+world} #輸出為"world"
總結:
符號 作用
: 判斷變數是否為空白,若為空白則為真
+ 正向,判斷變數是否存在且不為空白,若存在且不為空白則為真
- 反向,判斷變數是否不存在,若不存在則為空白
= 賦值,
? 提示資訊
2.取字串切片,獲得字串長度
2.1 取字串切片
文法:
[1].${變數:開始的位置索引}
作用:截取從指定的位置開始到字串結束的所有字元,開始字元的索引為0
執行個體:
str="hello world"
echo ${str:6} #輸出結果為"world"
[2].${變數:起始位置:長度}
作用:截取從指定的起始位置開始的指定長度的字串。
執行個體:
str="hello world"
echo ${str:6:2} #輸出為"wo"
2.2 計算字串長度
文法:${#變數名稱}
執行個體:
str="hello world"
echo ${#str} #輸出結果為11
3.對比樣式
目的:截取變數值(字串)的某一個部分
做法:將符合樣式的部分字串刪除或替換
3.1 由字串前面開始對比刪除最短的相符者
文法:${待測變數#樣式}
說明:從待測變數的值的左邊開始對比,刪除最短符合樣式的字串
執行個體:
filename="/usr/sbin/ntpdate"
echo ${filename#} #顯示結果ntpdate
3.3 由字串後面開始對比刪除最短的相符者
文法:${待測變數%樣式}
執行個體:
filename="/usr/sbin/ntpdate"
echo ${filename%/*} #輸出結果/usr/sbin
3.4 由字串後面開始對比刪除最長的相符者
文法:${待測變數%%樣式}
執行個體:
filename="hello/usr/sbin/ntpdate"
echo ${filename%%/*} #輸出結果hello
4.替換或刪除部分字串
4.1 只替換找到的第一個字串
文法:${待測變數/樣式/替換}
執行個體:
str="hello hello"
echo ${str/hello/world} #結果為world hello
4.2 替換找到的所有樣式字串
文法:${待測變數//樣式/替換}
執行個體:
str="hello hello"
echo ${str/hello/world} #結果為world world
4.3 刪除第一個指定的字串
文法:${待測變數/要刪除的字串/}
執行個體:
str="hello hello"
echo ${str/hello/} #結果為hello
4.4 刪除所有指定的字串
文法:${待測變數//要刪除的變數/}
執行個體:
str="hello world hello"
echo ${str//hello/} #輸出結果為world
5.命令擴充
文法:$(命令)
執行個體: time=$(date) 等價 time=`date`
6.算術擴充
文法:$((算術))
執行個體:
echo "a=$((5*5))" #結果為a=25
Linux進階變數