Bash:为什么不在herdoc中读取变量?

Bash:为什么不在herdoc中读取变量?,bash,function,scope,heredoc,Bash,Function,Scope,Heredoc,我有文件启动器 #! /bin/bash . ./lib/utils _name="microapplication-launcher" _version="0.1" _shortname="launcher" DEFAULTS=$(cat <<'EOD' # openning-prefs : terminal browser folder launcher-openning-prefs=TRUE|FALSE|TRUE| EOD ) CONFIG="$( makeconfig )

我有文件启动器

#! /bin/bash
. ./lib/utils

_name="microapplication-launcher"
_version="0.1"
_shortname="launcher"

DEFAULTS=$(cat <<'EOD'
# openning-prefs : terminal browser folder
launcher-openning-prefs=TRUE|FALSE|TRUE|
EOD
)
CONFIG="$( makeconfig )"
该函数在启动器中运行。在makeconfig中可以很好地读取var__名称(2个下划线),以生成文件名,但在herdoc中不再读取该名称以生成注释。
删除或不删除下划线、导出或不导出变量似乎没有任何效果。

如果引用分隔符,则HEREDOC中的变量不会展开

改变

 cat <<"EOD"
cat可能重复的
# $__name $__version
app-path=$APPPATH
 cat <<"EOD"
 cat <<EOD