구성과 템플릿이라는 두 개의 파일이 있고 템플릿의 일부를 구성의 변수로 바꾸고 싶습니다.
config.txt에는 다음이 포함됩니다.
MYURL='www.google.com'
template.txt에는 다음이 포함됩니다.
url = MYURL
나는 사용했다
sed -e "s/MYURL/${replace}$MYURL/" template
그러나 config.txt의 변수는 해당 파일에만 정의됩니다. 나도 사용해봤는데
source config.txt
echo $MYURL
하지만 내가 원하는 효과는 나오지 않았다. 어떻게 해야 하나요?
답변1
나중에 grep을 사용하는 이유를 설명하기 위한 몇 가지 설명은 다음과 같습니다.
$ cat config.txt
/* blah blah yadda yadda */
/* look at me... I'm a text file, not a bash script... don't source me directly */
#MYURL='www.google.com'
MYURL='www.stackexchange.com'
$ cat template.txt
#url = example
url = MYURL
그리고 스크립트:
$ source <(grep -E "^[0-9A-Za-z]+=" config.txt)
$ echo $MYURL
www.stackexchange.com
$ sed -r -e "s/^url[ ]*=.*/url=${MYURL}/" template.txt
#url = example
url=www.stackexchange.com
(그런데 sed 스크립트의 의도가 무엇인지 모르겠습니다... 내 스크립트는 완전히 다른 접근 방식을 가지고 있으며 공백이 있든 없든 url=... 및 url=... 템플릿을 지원하지만 그렇게 할 수는 없습니다. config.txt에 공백이 있습니다. 그렇지 않으면 얻을 수 없습니다. 내 grep에 sed를 다시 추가할 필요가 없습니다.)
편집: 아, 당신이 원하는 것은 키 대신 더미 값으로 바꾸는 것입니다. 원한다면 간단히 다음과 같이 할 수 있습니다.
$ sed -r -e "s/MYURL/${MYURL}/" template.txt
#url = example
url = www.stackexchange.com