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)
以这种方式打印该行:
echo '<root><foo a="b">'"$lorem"'</foo><bar value="ipsum" /></root>' >> "$MY_XML"
Run Code Online (Sandbox Code Playgroud)
这是需要的,因为单引号拒绝 shell 解释器替换内部的环境变量
将内联文档与 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 命令来限制可以在内联文档中使用的变量。