簡體   English   中英

命令替換中的轉義雙引號是否會成為Bash中的文字?

[英]Do escaped double quotes in command substitution become literals in Bash?

如果我在Bash中執行此操作

echo "1 2"

我得到1 2 但是如果我執行

echo \"1 2\"

我得到"1 2"

現在我想知道是否執行

echo $(echo \"1 2\")

我會得到1 2 但是,我再次得到"1 2" 實際上,無論鏈中有多少命令替換

echo $(echo $( ... echo \"1 2\") ... )

我總是得到"1 2" 這是為什么?

$(command)的輸出替換回命令行后,唯一要做的附加解析是單詞拆分和通配符擴展。 引號不會被處理,因此如果命令輸出引號,引號將作為文字字符保留在命令行中。

bash手冊中有關“ 去除報價”的部分對此進行了說明:

在前面的擴展之后,所有不是由上述擴展之一引起的字符'\\','''和'“'都被取消了引號。

由於引號是由命令替換產生的(這是在此之前列出的擴展之一),因此不會刪除它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM