Linux

使用 bash 腳本創建 XML 文件

  • May 15, 2021

我想使用 bash 腳本(而不是 dom)創建簡單的 xml 文件

但是當我在行中設置值時, 顯列印 $lorem 單詞而不是 val

歡迎來到

echo '<root><foo a="b">$lorem</foo><bar value="ipsum" /></root>' >> $MY_XML

我也試試這個

echo '<root><foo a="b">\$lorem</foo><bar value="ipsum" /></root>' >> $MY_XML

echo '<root><foo a="b">"$lorem"</foo><bar value="ipsum" /></root>' >> $MY_XML

echo '<root><foo a="b">\"$lorem\"</foo><bar value="ipsum" /></root>' >> $MY_XML

但所有這些都列印出確切的行而不是 val

請建議如何列印 val $lorem ?如下例

<root><foo a="b">LOL</foo><bar value="ipsum" /></root>

以這種方式列印該行:

echo '<root><foo a="b">'"$lorem"'</foo><bar value="ipsum" /></root>' >> "$MY_XML"

這是必需的,因為單引號拒絕 shell 解釋器替換內部的環境變數

令人沮喪的是,您省略的其中一種組合可能會起作用:

echo "<root><foo a=\"b\">$lorem</foo><bar value=\"ipsum\" /></root>" >> $MY_XML

單引號將所有內容與您鍵入的內容完全相同。逃避是\行不通的。雙引號將評估字元串。在雙引號內,您可以使用\轉義特定字元(包括雙引號字元本身)。

您還可以組合以不同方式引用的字元串部分。在這裡,$lorem仍然是雙引號,但字元串的其餘部分用單引號括起來:

echo '<root><foo a="b">'"$lorem"'</foo><bar value="ipsum" /></root>' >> $MY_XML

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