foo
foo ${bar}
파일 과 bash 스크립트가 포함되어 있습니다bar
bar="foo"
file=$(cat foo)
echo "$file"
그래서 그런 일이 일어날 것입니다 foo ${bar}
. 그러나 나는 그런 일이 일어나기를 바랍니다 foo foo
.
이 목표를 어떻게 달성할 수 있나요?
답변1
변수를 환경으로 내보내는 것이 마음에 들지 않으면 다음을 사용할 수 있습니다 envsubst
.
NAME
envsubst - substitutes environment variables in shell format strings
SYNOPSIS
envsubst [OPTION] [SHELL-FORMAT]
DESCRIPTION
Substitutes the values of environment variables.
전임자. 주어진
$ cat foo
foo ${bar}
그 다음에
$ export bar="foo"
$ envsubst < foo
foo foo
답변2
파일을 스크립트에 통합하거나 파일에 일부 코드를 추가하는 것이 가능하다면 여기 문서를 사용하여 수행할 수 있습니다.
foo=bar
cat <<EOT
abc
_${foo}_
def
EOT
abc
_bar_
def
일반 파일을 사용하여 비슷한 작업을 수행할 수 있습니다.
export foo=bar
commands="cat <<EOT
$(<input)
EOT"
bash -c "$commands"
답변3
다음을 사용하여 이 작업을 수행할 수 있습니다 eval
.
$ cat foo
foo ${bar}
$ cat bar
bar="foo"
file="$(cat foo)"
eval echo "${file}"
$ bash bar
foo foo
eval
악용되기 쉬우 니 주의하세요 . 읽어주세요평가 명령 및 보안 문제.