J'ai un fichier XML appelé config.xml
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_Shell_COMMAND</command>
</hudson.tasks.Shell>
</builders>
Voici le contenu de mon fichier de propriétés
build.prop
Ceci est pour vérifier le travail de Jenkins. Ici, nous allons effectuer des opérations de caisse.
script shell
Ici, je lis le fichier de propriétés ligne par ligne et assigne les valeurs du fichier de propriétés dans une variable et utilise la valeur dans le champ du fichier 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."
Note: Maintenant, j'ai utilisé le fichier config.xml dans le script shell pour modifier la valeur du champ, mais je souhaite utiliser la variable shell en dehors du fichier config.xml.Comment dois-je représenter le chemin d'accès et comment injecter les valeurs dans le fichier config.xml.
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Note: sed seperator est normalement/mais je suggère @ dans ce cas pour permettre à la variable d'inclure/sans s'échapper