$0? 腳本名稱
$# 腳本后接收的參數(shù)個(gè)數(shù)
$n 當(dāng)前執(zhí)行腳本的第n個(gè)參數(shù)电爹,大于9的要用{}括起來(lái)
$@??獲取當(dāng)前腳本的所有傳參蔫仙,加引號(hào)"$@"="$1" "$2" "$3"
$*? 獲取當(dāng)前腳本的所有傳參,加引號(hào)"$*"="$1 $2 $3"
$? 獲取上個(gè)指令的執(zhí)行狀態(tài)返回值
$$ 當(dāng)前執(zhí)行的腳本進(jìn)程號(hào)
$!上一個(gè)執(zhí)行的腳本進(jìn)程號(hào)
${parameter} 返回變量$parameter的內(nèi)容
${#parameter} 返回變量$parameter內(nèi)容的長(zhǎng)度(按字符)丐箩,也適合特殊變量*
${parameter:offset} 在變量${parameter}中摇邦,從位置offset之后開始提取子串到結(jié)尾
${parameter:offset:length} 在變量${parameter}中恤煞,從位置offset之后開始提取長(zhǎng)度為length的子串
#刪除
${parameter#word} 從變量${parameter}【開頭】開始刪除最【短】匹配的word子串
${parameter##word} 從變量${parameter}【開頭】開始刪除最【長(zhǎng)】匹配的word子串
${parameter%word} 從變量${parameter}結(jié)尾開始刪除最短匹配的word子串
${parameter%%word} 從變量${parameter}結(jié)尾開始刪除最長(zhǎng)匹配的word子串
#類似sed替換
${parameter/pattern/string} ? ? 使用string代替第一個(gè)匹配的pattern
${parameter//pattern/string} 使用string代替所有匹配的pattern
獲取變量?jī)?nèi)容長(zhǎng)度的方法:
echo $OLDBOY|wc -L
?echo ${#OLDBOY}
?expr length "$OLDBOY"
echo $OLDBOY|awk '{print length}'
?echo $OLDBOY|awk '{print length($0)}'
?result=${test:-unset}----------------變量名=${值:-替換值}(當(dāng)值為空時(shí)會(huì)用替換值代替原有值)
數(shù)值運(yùn)算:
1)整數(shù)運(yùn)算:
方法1:
?let a=a+1
方法2:推薦小括號(hào)
?((a=a+1))
方法3:盡量不用做運(yùn)算
expr $a + 111
方法4:
?echo $[$a+11]
方法5:
declare -i a=a+10
整數(shù)或者小數(shù)運(yùn)算:
bc(內(nèi)置計(jì)算器)
echo 1+2|bc
(()) 邏輯判斷
?a=10
?((a++)) 遞歸增加,默認(rèn)步長(zhǎng)為1
?((a--)) 遞歸減小施籍,默認(rèn)步長(zhǎng)為1
expr功能:
1)計(jì)算
?expr 10 + 10
2)獲取字符串長(zhǎng)度
?expr length "$a"
3)判斷字符串是否為整數(shù)數(shù)字或字符
?expr $a + 1 &>/dev/null
?echo $?
0
?expr $a + 1 &>/dev/null
?echo $?
2
4)用來(lái)判斷文件擴(kuò)展名是否符合指定擴(kuò)展名
[root@web01 /server/scripts]# cat judge.sh
? if expr "$1" : ".*\.avi$" >/dev/null ; then
? ? echo "好興奮啊"
? else
? ? echo "好失望啊"
? fi
[root@web01 /server/scripts]# sh judge.sh oldboy.avi
好興奮啊
[root@web01 /server/scripts]# sh judge.sh oldboy.log
好失望啊