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