shell入門第七講
1、引號細說
我們之前的學習中給大家講解了變量賦值及引用的操作,那么講解中說了一下賦值中,如果值包含有空格,我們一定要加上引號,單引號和雙引號都是可以的,比如:
1.1、使用雙引號
bash [root@localhost ~]# VAR="a b c" [root@localhost ~]# echo ${VAR} a b c
1.2、使用單引號
bash [root@localhost ~]# VAR='a b c' [root@localhost ~]# echo ${VAR} a b c
這樣子一看其實區別是沒有的,都可以達到一個變量賦值的目的。
1.3、單、雙引號引用操作
定義一個變量的值時,我們還可以再次引用其他的變量,比如
bash [root@localhost ~]# NUM=666 [root@localhost ~]# VAR="a b c ${NUM}"
我們先定義了變量NUM。然后再定義第二個變量VAR時,可以把引用變量NUM的操作定義在VAR的值中?,F在我們打印一下VAR變量值來看看效果
bash [root@localhost ~]# echo ${VAR} a b c 666
可以看到在打印 a b c的同時也把NUM的變量值打印出來了,可以看出來在打印變量操作中,如果變量的值包含了打印其他變量的操作,那么會一同打印出來。這樣的操作在實際工作中也是非常常用的。
現在我們再來看看如果使用單引號是什么結果。
bash [root@localhost ~]# NUM=666 [root@localhost ~]# VAR='a b c ${NUM}' [root@localhost ~]# echo ${VAR} a b c ${NUM}
可以明顯看到VAR變量中的NUM的值并沒有打印出來,而是原樣返回了結果。因此我們可以知道
單引號會使shell忽略特殊字符的含義,雙引號則可以解釋shell中特殊符號原有的意義。這也就是我們常說的單引號是強引用,雙引號是弱引用。
2、命令結果替換
命令結果替換操作就是把一個命令的結果賦值給另外一個變量的過程,比如bash [root@localhost ~]# NUM=666 [root@localhost ~]# echo ${NUM} 666 [root@localhost ~]# echo ${NUMM}
我們還是定義了變量NUM的值為666,而NUMM變量沒有值,因此打印為空,現在我使用反引號`來賦值給其他變量bash [root@localhost ~]# NUMM=
echo ${NUM}` [root@localhost ~]# echo ${NUMM} 666
反引號就是先執行反引號引起來的命令,把這個命令執行完畢后再執行其他的操作。
比如我們這里就是先echo打印NUM變量的值,然后把這個值再次賦值給NUMM變量,因此現在NUMM也是有變量值了,這就是將命令結果作為變量值的一個操作。
反引號是鍵盤上ESC下面的一個按鍵,反引號等效于使用 $() ,都是用于執行shell命令的,比如
bash [root@localhost ~]# ps aux | grep bash | head -1 | awk '{print $2}' 6283 [root@localhost ~]# PID=$(ps aux | grep bash | head -1 | awk '{print $2}') [root@localhost ~]# echo $PID 6283
我們上面是第一條命令是獲取bash進程號,使用$()就是先把此進程號獲取出來,然后賦值給PID變量,最后我們打印出來結果,一切符合預期。