是否可以在嵌套的 heredoc 中进行变量替换?

Is it possible to have variable substitution in a nested heredoc?

我有一个 bash 这种结构的脚本:

ssh user1@host <<EOF1
    var1="abc"
    echo $var1

    su user2 <<EOF2
        var2="xyz"
        #echo var2 (how?)
        ..do something..
EOF2
EOF1  

现在我可以定义和访问外部 heredoc EOF1 中的变量,如图所示。是否可以在内部 heredoc EOF2 中做同样的事情?

这就是我在我的脚本中所做的: 我在 EOF2 中以不同的用户身份执行命令,获取该命令的退出代码并将其存储在变量中以供进一步检查 EOF2 块内部。但是我坚持将命令的退出代码存储到一个变量中,稍后再访问它。这样做的任何其他方式也会有很大帮助。谢谢

是的,只需添加一个反斜杠:

echo \$var2

(在外部 heredoc 内)转换为:

echo $var2

最后在里面的heredoc变成:

echo $var2