![Как получить значение поля config.XML на основе значения файла свойств в скрипте оболочки?](https://rvso.com/image/1000396/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BE%D0%BB%D1%8F%20config.XML%20%D0%BD%D0%B0%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%20%D0%B2%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B5%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B8%3F%20.png)
У меня есть 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 обычно является /, но в этом случае я предлагаю @, чтобы разрешить переменной включать / без экранирования.