![쉘 스크립트의 특성 파일 값을 기반으로 config.XML 필드 값을 가져오는 방법은 무엇입니까?](https://rvso.com/image/1000396/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%ED%8A%B9%EC%84%B1%20%ED%8C%8C%EC%9D%BC%20%EA%B0%92%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20config.XML%20%ED%95%84%EB%93%9C%20%EA%B0%92%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20.png)
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 구분 기호는 일반적으로 /이지만 이 경우 변수가 이스케이프하지 않고 /를 포함하도록 허용하려면 @를 사용하는 것이 좋습니다.