한 파일에서 다른 파일로 변수 전송

한 파일에서 다른 파일로 변수 전송

구성과 템플릿이라는 두 개의 파일이 있고 템플릿의 일부를 구성의 변수로 바꾸고 싶습니다.

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

관련 정보