使用 bash 脚本创建 XML 文件

mai*_*ash 3 linux bash xml sed echo

我想使用 bash 脚本(而不是 dom )创建简单的 xml 文件

但是当我在行中设置值时, echo打印 $lorem 字而不是 val

lorem = 哈哈

echo '<root><foo a="b">$lorem</foo><bar value="ipsum" /></root>' >> $MY_XML
Run Code Online (Sandbox Code Playgroud)

我也试试这个

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
Run Code Online (Sandbox Code Playgroud)

但所有这些都准确地打印了行而不是 val

请建议如何打印 val $lorem ?如下例

 <root><foo a="b">LOL</foo><bar value="ipsum" /></root>
Run Code Online (Sandbox Code Playgroud)

Rom*_*nov 5

以这种方式打印该行:

echo '<root><foo a="b">'"$lorem"'</foo><bar value="ipsum" /></root>' >> "$MY_XML"
Run Code Online (Sandbox Code Playgroud)

这是需要的,因为单引号拒绝 shell 解释器替换内部的环境变量


dai*_*gio 5

将内联文档与 cat 一起使用

cat >destfile <<EOF
<your ZML here...where $vas expand happly>
but the rest remain as is
EOF
Run Code Online (Sandbox Code Playgroud)

我在很多脚本中都使用了它。还可以考虑使用envsubst 命令来限制可以在内联文档中使用的变量。