Bash

命令中的 $() 是什麼?

  • August 9, 2021

$()Linux Shell 命令中有什麼?

例如:

chmod 777 $(pwd)

它與反引號 `` 非常相似。

它被稱為命令替換posix 規範),它呼叫一個子shell。$()反引號 ( )的大括號中或之間的命令在子 shell 中執行,然後將輸出放在原始命令中。

與反引號不同,$(...)表單可以嵌套。因此,您可以在另一個替換中使用命令替換。

替換中的轉義字元也存在差異。我更喜歡這種$(...)形式。

在 POSIX 或類似 POSIX 的 shell ( ksh, bash, ash, zsh, yash…) 中,它就像````:內部的命令$()被執行並被其標準輸出替換。$()除非在雙引號內,否則會完成分詞和文件名生成。因此

chmod 777 $(pwd)

應替換為:

chmod 777 "$(pwd)"

避免在目前工作目錄路徑上產生分詞和文件名。

甚至更好(除非在某些 shell 下,如 zsh,以防目錄已重命名):

chmod 777 "$PWD"

因為$PWD是一個特殊變數,它保存 POSIX shell 中目前工作目錄的路徑。

甚至更好:

chmod 777 .

由於.目前目錄中的條目是指向該目錄本身的硬連結。

引用自:https://unix.stackexchange.com/questions/147420