
У меня есть XML-файл с именем config.xml
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_SHELL_COMMAND</command>
</hudson.tasks.Shell>
</builders>
Вот содержимое моего файла свойств
build.prop
Это необходимо для проверки задания от Jenkins. Здесь мы выполним операцию проверки.
Скрипт оболочки
Здесь я считываю файл свойств построчно, присваиваю значения файла свойств переменной и использую это значение в поле файла 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."
Примечание:Теперь я использовал config.xml в скрипте оболочки для изменения значения поля, но я хочу использовать переменную оболочки вне файла config.xml. Как мне представить путь и как мне ввести значения в файл config.xml?
решение1
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
Примечание: разделителем sed обычно является /, но в этом случае я предлагаю @, чтобы разрешить переменной включать / без экранирования.