我有一个名为 config.xml 的 XML 文件
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_SHELL_COMMAND</command>
</hudson.tasks.Shell>
</builders>
这是我的财产文件内容
构建属性
这是从詹金斯签出工作。在这里我们将执行结帐操作。
Shell 脚本
这里我逐行读取属性文件并将属性文件值分配到变量中并在 config.xml 文件字段中使用该值。
file="/var/lib/jenkins/workspace/Env-inject-example2/build.prop"
counter=1
while IFS= read line
do
# display $line
echo "Text read from file: $line"
counter=`expr $counter + 1`
name=$(cat "$file")
echo $name
echo "Change values in config.xml..."
done <"$file"
cat <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<config>
<builders>
<hudson.tasks.Shell>
<command>$name</command>
</hudson.tasks.Shell>
</builders>
</config>
EOF
echo "Done."
笔记:现在我已经使用 shell 脚本中的 config.xml 来更改字段值,但是我想使用 config.xml 文件之外的 shell 变量。我应该如何表示路径以及如何将值注入 config.xml 文件。
答案1
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
注意:sed 分隔符通常是 / ,但在这种情况下我建议使用 @ ,以允许变量包含 / 而无需转义