Linux Shell基礎 單引號、雙引號、反引號、小括號和大括號


單引號和雙引號

單引號和雙引號用於變量值出現空格時將字符用引號括起來。 二者的主要區別在於,

被單引號括起來的字符都是普通字符,就算特殊字符也不再有特殊含義;

被雙引號括起來的字符中,"$"、"\"和反引號是擁有特殊含義的,"$"代表引用變量的值,而反引號代表引用命令。

使用單引號

如果輸出時使用單引號,則$PATH原封不動地輸出

[root@localhost ~]# echo '$PATH'

 使用雙引號

如果輸出時使用雙引號,則會輸出變量PATH的值

[root@localhost ~]# echo "$PATH"

反引號

如果需要調用命令的輸出,或把命令的輸出賦予變量,則命令必須使用反引號包含,這條命令才會執行,反引號的作用和 $(命令) 是一樣的。命令如下:

[root@localhost -]# echo `ls`
anaconda-ks.cfg install.log install.log.syslog sh test testfile

用反引號包含命令,這條命令才會執行。否則只是輸出字符 ls。

 小括號和大括號 

在介紹小括號和大括號的用法及區別之前,我們先解釋兩個概念:父 Shell 和子 Shell。

在 Bash 中,是可以調用新的 Bash 的,比如:
[root@localhost ~]# bash
[root@localhost ~]#

這時,可以通過 pstree 命令査看一下進程數,命令如下:

[root@localhost ~]# pstree
init──┬──abrt-dump-oops
…省略部分輸出
├─sshd──┬──sshd───bash───bash───pstree
…省略部分輸出
可以看到我們的命令都是通過 ssh 遠程服務鏈接的,在 ssh 中生成了第一個 Bash,就是父 Shell。因為我們剛剛執行了 Bash 命令,所以在第一個 Bash 中生成了第二個 Bash,這個 Bash 就是子 Shell,我們是在子 Shell 中運行命令 pstree 的。
小括號和大括號主要區別在於:
  • () 執行一串命令時,需要重新開啟一個子 Shell 來執行。
  • {} 執行一串命令時,在當前 Shell 中執行。
  • () 和 {} 都是把一串命令放田括號里面,並且命令之間用";"隔開。
  • () 最后一條命令可以不用分號。
  • {} 最后一條命令要用分號。
  • {} 的第一條命令和左括號之間必須有一個空格。
  • () 和 {} 中括號里面的某條命令的重定向只影響該命令,但括號外的重定向則會影響到括號里的所有命令。
下面舉幾個例子。
#在父 Shell 中定義 name 的值是 li
[root@localhost ~]# name=li 
 #給name變量重新賦值,但是這個值只在子Shell中
[root@localhost ~]# (name=zhou;echo $name)
zhou
#父Shell中name的值還是li,而不是zhou
[root@localhost ~]# echo $name
li
#用大括號來進行一串命令的執行時,name變量的修改是直接在父Shell中進行的
[root@localhost ~]#{ name=wei;echo $name;} 
wei
#name變量的值已經被修改了
[root@localhost ~]# echo $name
wei
其實在執行一串命令時,如果使用的是小括號,則這串命令所做的修改只在子 Shell 中生效,一旦命令執行結束,回到父 Shell 中,這個修改就會丟失;而如果使用的是大括號,則此串命令直接在父 Shell 中執行,命令執行結束后,修改依然會生效。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM