變量的意義
我們在使用Linux命令或腳本的時(shí)候,會有一些輸出盆均,那么這些輸出的信息可以用變量
臨時(shí)存儲疾就,以備我們下一條命令或腳本使用。
變量的定義
變量的定義建議用一個(gè)有意義的英文單詞來代表變量蔫缸,不要使用簡單的字母a
,b
這類的變量名定義际起。因?yàn)槲覀儗懞肧hell腳本實(shí)際上是要給人看的拾碌,所以我們定義好的變量吐葱,是希望變量有具體的含義,能讓閱讀Shell腳本人能輕松的明白校翔。
變量的命名規(guī)則:
- 字母弟跑、數(shù)字、下劃線
- 不以數(shù)字開頭
變量的賦值
為變量賦值的過程防症,稱為變量替換
Shell腳本里變量是不區(qū)分變量類型的
變量賦值的規(guī)則:變量名=變量值
var=123
注意:賦值的等號左邊右邊是不能有空格的孟辑,如果出現(xiàn)空格那么執(zhí)行的時(shí)候回進(jìn)行報(bào)錯(cuò)
[root@lincoding ~]# var=123
[root@lincoding ~]#
[root@lincoding ~]# var =123
-bash: var: command not found
[root@lincoding ~]# var = 123
-bash: var: command not found
因?yàn)槌霈F(xiàn)空格,Shell會認(rèn)為前面的是命令而不是變量
使用let為變量賦值
[root@lincoding ~]# let num=10+10
[root@lincoding ~]# echo $num
20
用let
可以做簡單的數(shù)字運(yùn)算
將命令賦值給變量
[root@lincoding ~]# ls_cmd=ls
[root@lincoding ~]# ${ls_cmd}
anaconda-ks.cfg install.log install.log.syslog
還可以使用把命令賦值給變量蔫敲,在使用變量的時(shí)候饲嗽,相當(dāng)于執(zhí)行命令
將命令結(jié)果賦值給變量,使用$()或者``
[root@lincoding ~]# file_list=$(ls /tmp)
[root@lincoding ~]# echo ${file_list}
pear yum.log
[root@lincoding ~]# file_list=`ls /tmp`
[root@lincoding ~]# echo ${file_list}
pear yum.log
使用這種方式的好處奈嘿,就是避免重復(fù)執(zhí)行相同命令貌虾,增加服務(wù)器的開銷,而是只執(zhí)行一次命令裙犹,并把命令的結(jié)果保存到變量尽狠,做下一步的使用
變量值有空格等特殊字符可以包含在雙引號""和單引號''
[root@lincoding ~]# var="1 2 3"
[root@lincoding ~]# echo $var
1 2 3
[root@lincoding ~]# var='a b c'
[root@lincoding ~]# echo $var
a b c
當(dāng)字符串需要雙引號時(shí),需要用單引號來定義字符串
[root@lincoding ~]# var='"a" "b" "c"'
[root@lincoding ~]# echo $var
"a" "b" "c"
當(dāng)字符串需要單引號時(shí)叶圃,需要用雙引號來定義字符串
[root@lincoding ~]# var="'a' 'b' 'c'"
[root@lincoding ~]# echo $var
'a' 'b' 'c'
雙引號和單引號還有個(gè)區(qū)別袄膏,就是單引號里字符串不管是特殊字符都會被解釋成普通的字符串
[root@lincoding ~]# string="${var} , Shell"
[root@lincoding ~]# echo $string
hello , Shell
[root@lincoding ~]# string='${var} , Shell'
[root@lincoding ~]# echo $string
${var} , Shell
小結(jié)
在Shell里變量的定義是不需要定義類型的,變量賦值的時(shí)候等號兩邊不能有空格掺冠,變量可以賦值Linux的命令沉馆,也可以賦值運(yùn)行Linux命令返回的結(jié)果輸出內(nèi)容,也可以做簡單的數(shù)字計(jì)算赫舒,并雙引號和單引號定義的字符串是有一定的區(qū)別的悍及,單引號定義的字符串都會被解釋成普通的字符串闽瓢,不管是否有特殊字符接癌。