sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Nota: o seperator sed normalmente é / mas sugiro @ neste caso para permitir que a variável inclua / sem escapar
Eu tenho um arquivo XML chamado config.xml
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_SHELL_COMMAND</command>
</hudson.tasks.Shell>
</builders>
Aqui está o conteúdo do meu arquivo de propriedade
build.prop
Isto é para verificar o trabalho de Jenkins. aqui vamos realizar a operação de checkout.
Script de shell
Aqui estou lendo o arquivo de propriedades linha por linha e atribuo os valores do arquivo de propriedades a uma variável e usei o valor no campo do arquivo 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."
Observação: agora usei o config.xml no script shell para alterar o valor do campo, mas desejo usar a variável shell fora do arquivo config.xml. Como devo representar o caminho e Como devo injetar os valores no arquivo config.xml.
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Nota: o seperator sed normalmente é / mas sugiro @ neste caso para permitir que a variável inclua / sem escapar