Bash 对存储在变量中的HereDocument使用进程替换

Bash 对存储在变量中的HereDocument使用进程替换,bash,heredoc,Bash,Heredoc,我知道我可以使用bash的process substitution功能通过process substitution指定文件参数,然后使用here文档指定数据,如下所示: foo --config <(cat <<EOF # contents of config file ... EOF ) foo--config我在写这个问题时想到了解决方案。而不是使用 我认为你发现自己的解决方案更简单,但是为了完整性,这里是如何使用这里的文档。 要在变量中存储here doc,可以使用(是

我知道我可以使用bash的process substitution功能通过process substitution指定文件参数,然后使用here文档指定数据,如下所示:

foo --config <(cat <<EOF
# contents of config file
...
EOF
)

foo--config我在写这个问题时想到了解决方案。而不是使用<代码> 我认为你发现自己的解决方案更简单,但是为了完整性,这里是如何使用这里的文档。
要在变量中存储here doc,可以使用(
是次要提示字符串):

$var=$(cat第2行)
>EOF
> )
$declare-p变量
declare--var=“line1
第2行“
然后,要使用包含该变量内容的here doc:

$ cat <<EOF
> $var
> EOF
line1
line2
$cat EOF
第1行
第2行
也就是说,对于你的情况,类似这样的事情:

read -r -d '' MY_CONFIG <<EOF
# contents of config file
...
EOF
$ foo --config <(cat <<EOF
> $var
> EOF
> )
$foo--config)

正如我所说,只使用
显然更简单。此外,您可以在流程替换内部使用
herestring

MY_CONFIG="hello world"
md5sum <( <<< "$MY_CONFIG" )
MY_CONFIG=“你好,世界”

md5sum
less
可能给出假阳性:
less-f
$ cat <<EOF
> $var
> EOF
line1
line2
$ foo --config <(cat <<EOF
> $var
> EOF
> )
MY_CONFIG="hello world"
md5sum <( <<< "$MY_CONFIG" )