linux使用版本: CentOS 7
[root@azfdbdfsdf230lqdg1ba91 ~]# cat /etc/redhat-releaseCentOS Linux release 7.4.1708 (Core)[root@azfdbdfsdf230lqdg1ba91 ~]# uname -aLinux azfdbdfsdf230lqdg1ba91 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux[root@azfdbdfsdf230lqdg1ba91 ~]#
$符號草集
目標(biāo)
$符號在linux系統(tǒng)的有著很多很重要的作用,特別是在編寫bash腳本的時(shí)候,隨處可見$的身影。由于他的千變?nèi)f化,多種多樣,使對他的掌握和使用,尤其是記憶帶來了挑戰(zhàn),所以,現(xiàn)在,我們來一起將它的用法做一次匯總,形成草集。掌握他們不會讓你工資大漲,因?yàn)槊嬖嚥粫柕剑菚岣吣愕墓ぷ餍剩瑪U(kuò)展你的視野
目前,我所知道的$用法有$、"$"、$0 $1 $n、$#、$@ $*、$?、$()、${}、${#}、$[]、$-、$!、$$。額外!$,!!,依次詳說
$ 獲取變量值
$可獲取變量的值
[root@izbp10lqlgy2g31s41bt94z ~]# a=1[root@izbp10lqlgy2g31s41bt94z ~]# echo $a1
"$" 獲取變量值時(shí)最好使用"括起來
為什么有這個建議呢,看實(shí)例
[root@izbp10lqlgy2g31s41bt94z ~]# echo get value of a = $aget value of a = 1[root@izbp10lqlgy2g31s41bt94z ~]# echo "get value of a = $a"get value of a = 1
可以看到,有無"雙引號括起來似乎效果是一樣的。別早下結(jié)論,往下看
[root@izbp10lqlgy2g31s41bt94z ~]# a="i am skyler"[root@izbp10lqlgy2g31s41bt94z ~]# [ $a == "i am skyler" ]-bash: [: 參數(shù)太多
這里解析下[],[]是條件判斷符號,相當(dāng)于test命令。他的意思是判斷a變量的值是否等于"i am skyler"。
那么為什么會報(bào)錯呢,因?yàn)閇 $a == "i am skyler"]這種寫法變量解析后成為[ i am skyler == "i am skyler" ],很明顯,這個判斷式無法判斷等號兩邊的字符串,我們想要的是[ "i am skyler" == "i am skyler" ]的比較。所以平時(shí)我們在是name"
[root@izbp10lqlgy2g31s41bt94z ~]# [ "$a" == "i am skyler" ][root@izbp10lqlgy2g31s41bt94z ~]# echo $?0
使用雙引號后就可以了,這里提前用了下$?,他的意思是判斷前一個命令執(zhí)行結(jié)果是否正確。輸出的結(jié)果中,0表示執(zhí)行成功,非零值表示出錯
${}用于區(qū)分變量的邊界,明確告訴程序要取哪個變量的值
如下實(shí)例,不加{}程序無法判斷ab $abc哪個是變量,無法解析
[root@izbp10lqlgy2g31s41bt94z ~]# echo "get value of a = $abc"get value of a =[root@izbp10lqlgy2g31s41bt94z ~]# echo "get value of a = ${a}bc"get value of a = 1bc[root@izbp10lqlgy2g31s41bt94z ~]#${#}獲取變量值的長度
[root@izbp10lqlgy2g31s41bt94z ~]# echo "get length of a = ${#a}"get length of a = 1[root@izbp10lqlgy2g31s41bt94z ~]# a=11111[root@izbp10lqlgy2g31s41bt94z ~]# echo "get length of a = ${#a}"get length of a = 5[root@izbp10lqlgy2g31s41bt94z ~]# a=skyler[root@izbp10lqlgy2g31s41bt94z ~]# echo "get length of a = ${#a}"get length of a = 6[root@izbp10lqlgy2g31s41bt94z ~]#
新聞熱點(diǎn)
疑難解答
圖片精選