2013-10-19 64 views
14

在bash中,()$()都創建了一個子shell。

彼此之間有什麼區別?他們典型的用途是什麼?

回答

15

()只是創建一個複合命令,在括號內運行命令。 $()也是如此,但也會替代輸出。

從文檔:

  1. (list)
    list在一個子shell環境中執行......影響shell環境變量賦值和內置 命令不保持有效的命令完成後, 。退貨狀態爲 退出狀態list

  2. 命令替換
    命令替換允許命令的輸出來替換命令名。有兩種形式:

    $(command) 
    

    `command` 
    

    擊執行通過執行command和與命令, 與刪除任何尾隨的換行符的標準輸出替換命令替換的擴展。

+3

一個「aha」時刻! 「命令替換」是我們如何能夠將命令的輸出分配給變量,例如, 'RESULT = $(command)','$(command)'的輸出替換該命令,然後分配給'RESULT'。 –