Bash

雙引號內的命令替換

  • September 17, 2020

我正在嘗試編寫一個 bash 解析器。許多資源都提到了這個wiki

我陷入困境的一個領域是為什麼以下內容會起作用

echo "$(echo "hi")"    # output => hi

根據 wiki,引號在命令替換之前被解析。在那種情況下,為什麼解析第一組雙引號不會出錯,即"$(echo "

連結的文章說:

**$**除,"和之外```的所有字元都\失去了它們可能具有的任何特殊含義

$$ emphasis mine $$

$$(你的程式碼中發生的事情仍然很特別。$( )是命令替換的語法。關於命令替換,來自同一站點

值得注意的是,一旦進入命令替換,shell 就會開始一個全新的引用上下文。也就是說,替換內的雙引號與替換外的雙引號不匹配。

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