변수가 포함된 파일의 내용을 에코하는 데 도움

변수가 포함된 파일의 내용을 에코하는 데 도움

foofoo ${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악용되기 쉬우 니 주의하세요 . 읽어주세요평가 명령 및 보안 문제.

관련 정보