在shell脚本中使用tcl变量

时间:2017-08-21 21:07:39

标签: shell tcl

我有一个设置了一些变量的tcl文件。我想将这个tcl文件导入我的shell脚本,以便在那里使用它们。

当我做源<filename>.tcl并回显变量时,它抱怨说找不到变量。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您不能在shell脚本中使用tcl变量。尽管source似乎有用,但它不会按照你的想法去做。当您使用shell脚本中的source命令时,它将尝试将该文件的内容解释为shell脚本。

答案 1 :(得分:0)

这是......令人费解的

这是设置变量的Tcl脚本:

$ cat > vars.tcl
set var "this is a Tcl value"

让我们看看我们是否可以使用shell语法输出Tcl:

$ echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh
var="this is a Tcl value"

到目前为止一切顺利。现在,用bash:

$ echo "${var:-var is unset}"
var is unset
$ . <(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)
$ echo "${var:-var is unset}"
this is a Tcl value

如果您使用的是plain / bin / sh

$ echo "${var:-var is unset}"
var is unset
$ . <(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)
sh: 1: Syntax error: "(" unexpected
$ eval "$(echo 'source vars.tcl; foreach _v {var} {puts "$_v=\"[set $_v]\""}' | tclsh)"
$ echo "${var:-var is unset}"
this is a Tcl value

这假设您的Tcl脚本除了设置变量之外什么都不做,或者您可以使用它来获取变量集;并且变量值不包含双引号。