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 propriedades
construir.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 uso 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 dentro do script Shell para alterar o valor do campo, mas quero 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 .
Responder1
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Nota: o separador sed normalmente é / mas sugiro @ neste caso para permitir que a variável inclua / sem escapar