相关疑难解决方法(0)

用它们的实际值替换文件中的环境变量?

有没有一种简单的方法来替换/评估文件中的环境变量?假设我有一个config.xml包含以下内容的文件:

<property>
    <name>instanceId</name>
    <value>$INSTANCE_ID</value>
</property>
<property>
    <name>rootPath</name>
    <value>/services/$SERVICE_NAME</value>
</property>
Run Code Online (Sandbox Code Playgroud)

...等等。我想$INSTANCE_IDINSTANCE_ID环境变量的值替换文件$SERVICE_NAME中的SERVICE_NAMEenv var的值。我不会先验地知道需要哪些环境变量(或者,如果有人向配置文件添加了新的环境变量,我不想更新脚本)。谢谢!

scripting shell-script text-processing environment-variables

77
推荐指数
3
解决办法
10万
查看次数

替换文本中的环境变量(如果存在)

我知道envsubst替换输入中声明的环境变量。

$ echo 'Hello $USER' | envsubst
Hello myusername
Run Code Online (Sandbox Code Playgroud)

我想要的是一种替换环境变量的方法,如果它以其他方式存在envsusbst(或任何其他命令),则将变量字符串保持原样。我得到的是:

$ echo 'Hello $USER $UNDEFINED_VARIABLE' | envsubst
Hello myusername
Run Code Online (Sandbox Code Playgroud)

我想要的是:

$ echo 'Hello $USER $UNDEFINED_VARIABLE' | somecommand
Hello myusername $UNDEFINED_VARIABLE
Run Code Online (Sandbox Code Playgroud)

linux shell bash

6
推荐指数
1
解决办法
4811
查看次数

使用 bash 脚本创建 XML 文件

我想使用 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)

linux bash xml sed echo

3
推荐指数
2
解决办法
3万
查看次数