TCL heredoc 中的变量替换

Variable substitution in TCL heredoc

exec -- sftp user@127.0.0.1 {<<
get $filename
quit}

如何替换 $filename?

要获得变量替换,请使用双引号而不是大括号。标准 Tcl 规则,尽管在这种情况下您可能会感到惊讶。 (我建议将 << 放在外面作为它自己的参数,因为我认为这样更清楚。)

exec -- sftp user@127.0.0.1 << "
get $filename
quit"

您也可以使用subst 命令。有时这更清楚;它在很大程度上是等效的(除了一些 非常 无关紧要的细节,除非您正在处理大型模板化文档)。

exec -- sftp user@127.0.0.1 << [subst {
    get $filename
    quit
}]