답변:
전화하기 전에 envsubst
작은 따옴표를 사용하여 내보내기를 사용하여 다시 VAR_1
수정해야합니다. 에서처럼 :
export VAR_1='somevalue'
자세한 내용은 다음을 참조하십시오.
매뉴얼 페이지 당 :
envsubst [OPTION] [SHELL-FORMAT]
SHELL-FORMAT이 제공되면 SHELL-FORMAT에서 참조되는 환경 변수 만 대체됩니다. 그렇지 않으면 표준 입력에서 발생하는 모든 환경 변수 참조가 대체됩니다.
SHELL 형식 문자열이 어디에 형태 쉘 변수를 참조하여 문자열 " $variable
또는 ${variable}
[...] 변수 이름이 아닌 숫자로 시작하고 비어 있지 수 전적으로 영숫자의 구성 또는 ASCII 문자를 강조해야하며, 그렇지 않으면 이러한 변수 참조는 무시했습니다. " .
따라서 각 변수 이름을 envsubst
쉘 형식 문자열로 전달해야합니다 (물론, 문자 그대로로 전달되도록 이스케이프 / 따옴표로 묶어야합니다 envsubst
). 예:
입력 파일 예 infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
그리고 같은 일부 값
export VAR1="one" VAR2="two" VAR3="three"
그런 다음 실행
envsubst '${VAR1} ${VAR3}' <infile
또는
envsubst '${VAR1},${VAR3}' <infile
또는
envsubst '${VAR1}
${VAR3}' <infile
출력
VAR1=one
VAR2=${VAR2}
VAR3=three
또는 백 슬래시를 선호하는 경우 :
envsubst \$VAR1,\$VAR2 <infile
생산
VAR1=one
VAR2=two
VAR3=${VAR3}
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
다음 목록이있는 경우 :envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile