![¿Cómo tomar el valor del campo config.XML según el valor del archivo de propiedades en el script de Shell?](https://rvso.com/image/1000396/%C2%BFC%C3%B3mo%20tomar%20el%20valor%20del%20campo%20config.XML%20seg%C3%BAn%20el%20valor%20del%20archivo%20de%20propiedades%20en%20el%20script%20de%20Shell%3F%20.png)
Tengo un archivo XML llamado config.xml
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_SHELL_COMMAND</command>
</hudson.tasks.Shell>
</builders>
Aquí está el contenido de mi archivo de propiedad.
construir.prop
Esto es para comprobar el trabajo de Jenkins. aquí vamos a realizar la operación de pago.
script de shell
Aquí estoy leyendo el archivo de propiedades línea por línea y asigno los valores del archivo de propiedades a una variable y utilizo el valor en el campo del archivo 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."
Nota:Ahora he usado config.xml dentro del script de shell para cambiar el valor del campo, pero quiero usar la variable de shell fuera del archivo config.xml. ¿Cómo debo representar la ruta y cómo debo inyectar los valores en el archivo config.xml? .
Respuesta1
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Nota: el separador sed normalmente es / pero sugiero @ en este caso para permitir que la variable incluya / sin escapar