Bash
命令中的 $() 是什麼?
$()
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 .
由於
.
目前目錄中的條目是指向該目錄本身的硬連結。