Bash : 为什么在 HEREDOC 中没有读取变量?
Bash : why variables are not read in the HEREDOC?
我有文件 launcher
#! /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 )"
和文件 ./lib/utils
__name="microapplication"
#export __name
__version="0.1"
#export __version
CONFIGDIR=~/.config/$__name
CONFIG=""
APPPATH="$HOME/Site/local"
export APPPATH
function makeconfig {
# global config
CONFIG="$CONFIGDIR/$__name.conf";
[ ! -d $CONFIGDIR ] && mkdir $CONFIGDIR
[ ! -f $CONFIG ] && cat <<"EOD" > $CONFIG
# $__name $__version
app-path=$APPPATH
EOD
}
当运行ing时,它产生~/.config/microapplication/microapplication.conf和
# $__name $__version
app-path=$APPPATH
启动器中的功能是运行。 var __name(2 个下划线)在 makeconfig 中被很好地读取用于制作文件的名称,但不再被读取heredoc 产生评论。
删除或不删除下划线,导出或不导出变量似乎都没有效果。
如果您引用定界符,则 HEREDOC 中的变量不会展开。
改变
cat <<"EOD"
至
cat <<EOD
我有文件 launcher
#! /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 )"
和文件 ./lib/utils
__name="microapplication"
#export __name
__version="0.1"
#export __version
CONFIGDIR=~/.config/$__name
CONFIG=""
APPPATH="$HOME/Site/local"
export APPPATH
function makeconfig {
# global config
CONFIG="$CONFIGDIR/$__name.conf";
[ ! -d $CONFIGDIR ] && mkdir $CONFIGDIR
[ ! -f $CONFIG ] && cat <<"EOD" > $CONFIG
# $__name $__version
app-path=$APPPATH
EOD
}
当运行ing时,它产生~/.config/microapplication/microapplication.conf和
# $__name $__version
app-path=$APPPATH
启动器中的功能是运行。 var __name(2 个下划线)在 makeconfig 中被很好地读取用于制作文件的名称,但不再被读取heredoc 产生评论。 删除或不删除下划线,导出或不导出变量似乎都没有效果。
如果您引用定界符,则 HEREDOC 中的变量不会展开。
改变
cat <<"EOD"
至
cat <<EOD