Wie übernimmt man den config.XML-Feldwert basierend auf dem Eigenschaftendateiwert im Shell-Skript?

Wie übernimmt man den config.XML-Feldwert basierend auf dem Eigenschaftendateiwert im Shell-Skript?

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.

verwandte Informationen