
config.xml이라는 XML 파일이 있습니다.
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_SHELL_COMMAND</command>
</hudson.tasks.Shell>
</builders>
내 속성 파일 내용은 다음과 같습니다.
빌드.소품
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 구분 기호는 일반적으로 /이지만 이 경우 변수가 이스케이프하지 않고 /를 포함하도록 허용하려면 @를 사용하는 것이 좋습니다.