Ich habe eine XML-Datei namens config.xml
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_SHELL_COMMAND</command>
</hudson.tasks.Shell>
</builders>
Hier ist der Inhalt meiner Eigenschaftendatei
build.prop
Dies dient zum Auschecken des Jobs von Jenkins. Hier führen wir den Auscheckvorgang durch.
Shell-Skript
Hier lese ich die Eigenschaftendatei Zeile für Zeile, weise die Eigenschaftendateiwerte einer Variablen zu und verwende den Wert im Dateifeld „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."
Notiz:Jetzt habe ich die Datei config.xml im Shell-Skript verwendet, um den Feldwert zu ändern, aber ich möchte die Shell-Variable außerhalb der Datei config.xml verwenden. Wie stelle ich den Pfad dar und wie füge ich die Werte in die Datei config.xml ein?
Antwort1
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Hinweis: Das Trennzeichen für sed ist normalerweise /, aber ich schlage in diesem Fall @ vor, damit die Variable / ohne Escapezeichen einschließen kann.