bash에서 HEREDOC에 변수를 전달하는 방법은 무엇입니까? > test My name

나는 이런 식으로하고 싶다 :

$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end

$ cat test
My name is John

어떤 아이디어?



답변

cat <<EOF > test
My name is $NAME
EOF

또는

cat <<==end > test
My name is $NAME
==end

나를 위해 일했다.

당신이 걸릴 때처럼 보이는 ==end'변수를 대체하지 않습니다.

아, 여기 맨 페이지에 있습니다 (3.6.6 참조).

여기 문서의 형식은 다음과 같습니다.

      <<[-]word
              here-document
      delimiter

word 에서 매개 변수 확장, 명령 대체, 산술 확장 또는 경로 이름 확장이 수행되지 않습니다 . 단어의 문자 가 따옴표로 묶이면 구분 기호 는 단어에서 따옴표를 제거한 결과이며 여기 문서의 줄은 확장되지 않습니다. 단어 를 인용 부호로 묶지 않으면 여기 문서의 모든 줄에 매개 변수 확장, 명령 대체 및 산술 확장이 적용됩니다. […]


답변