Bash
雙引號內的命令替換
我正在嘗試編寫一個 bash 解析器。許多資源都提到了這個wiki
我陷入困境的一個領域是為什麼以下內容會起作用
echo "$(echo "hi")" # output => hi
根據 wiki,引號在命令替換之前被解析。在那種情況下,為什麼解析第一組雙引號不會出錯,即
"$(echo "
連結的文章說:
**
$
**除,"
和之外```的所有字元都\
失去了它們可能具有的任何特殊含義$$ emphasis mine $$
$
在$(
你的程式碼中發生的事情仍然很特別。$( )
是命令替換的語法。關於命令替換,來自同一站點:值得注意的是,一旦進入命令替換,shell 就會開始一個全新的引用上下文。也就是說,替換內的雙引號與替換外的雙引號不匹配。